期货中的兔子乌龟和兔子法的应用

苹果/安卓/wp
积分 43, 距离下一级还需 2 积分
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡下一级可获得
道具: 显身卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
BotVS的 CTP商品期货多品种海龟交易法源码分享/* 参数
Instruments& && && && && &合约列表& && && && && && && && && &&&字符串(string)
LoopInterval& && && && &&&轮询周期(秒)& && && && && && && && & 数字型(number)& && &&&3
RiskRatio& && && && && &&&% Risk Per N ( 0 - 100)& && && && &数字型(number)& && &&&1
ATRLength& && && && && &&&ATR计算周期& && && && && && && && & 数字型(number)& && &&&20
EnterPeriodA& && && && &&&系统一入市周期& && && && && && && &&&数字型(number)& && &&&20
LeavePeriodA& && && && &&&系统一离市周期& && && && && && && &&&数字型(number)& && &&&10
EnterPeriodB& && && && &&&系统二入市周期& && && && && && && &&&数字型(number)& && &&&55
LeavePeriodB& && && && &&&系统二离市周期& && && && && && && &&&数字型(number)& && &&&20
UseEnterFilter& && && && &使用入市过滤& && && && && && && && & 布尔型(true/false)& & true
IncSpace& && && && && && &加仓间隔(N的倍数)& && && && && && && &数字型(number)& && &&&0.5
StopLossRatio& && && && & 止损系数(N的倍数)& && && && && && && &数字型(number)& && &&&2
MaxLots& && && && && && & 单品种加仓次数& && && && && && && && &数字型(number)& && &&&4
RMode& && && && && && && &进度恢复模式& && && && && && && && & 下拉框(selected)& && &自动|手动
VMStatus@RMode==1& && && &手动恢复字符串& && && && && && && && &字符串(string)& && &&&{}
WXPush& && && && && && &&&推送交易信息& && && && && && && && & 布尔型(true/false)& &&&true
*/
var _bot = $.NewPositionManager();//&&声明一个全局变量, 值由 $.NewPositionManager 这个导出函数 返回, 返回的是一个 对象
var TTManager = {//&&一个对象,全局对象, 生成器。
& & New: function(needRestore, symbol, riskRatio, atrLen, enterPeriodA, leavePeriodA, enterPeriodB, leavePeriodB, useFilter,
& && &&&multiplierN, multiplierS, maxLots) {//构造函数
& && &&&//New函数参数:【needRestore】需要重启 ,symbol【合约编号】,riskRatio【风险比率】,atrLen【art指标长度】,enterPeriodA【入市期A】,leavePeriodA【离市期A】,
& && &&&//enterPeriodB【入市期B】,leavePeriodB【离市期B】,useFilter【使用过滤】,multiplierN【乘数N】,multiplierS【乘数S】,maxLots【单品种加仓次数】
& && &&&// subscribe
& && &&&var symbolDetail = _C(exchange.SetContractType, symbol);//根据合约编号设置合约类型,回去返回的合约信息,symbolDetail
& && &&&if (symbolDetail.VolumeMultiple == 0 || symbolDetail.MaxLimitOrderVolume == 0 || symbolDetail.MinLimitOrderVolume == 0 || symbolDetail.LongMarginRatio == 0 || symbolDetail.ShortMarginRatio == 0) {
& && && && &//合约一首 份数 == 0& & 或者& &最大下单量 == 0& & 或者& &最小下单量 == 0 或者 多头仓保证金率 == 0 或者&&空头仓保证金率 == 0
& && && && &Log(symbolDetail);//输出&&合约详细信息。
& && && && &throw &合约信息异常&;//抛出 合约 异常错误,策略停止。
& && &&&} else {
& && && && &Log(&合约&, symbolDetail.InstrumentName, &一手&, symbolDetail.VolumeMultiple, &份, 最大下单量&, symbolDetail.MaxLimitOrderVolume, &保证金率:&, _N(symbolDetail.LongMarginRatio), _N(symbolDetail.ShortMarginRatio), &交割日期&, symbolDetail.StartDelivDate);
& && && && &//显示合约一部分信息。
& && &&&}
& && &&&var obj = {//在New 函数内声明的对象,该对象在New函数最后会作为返回值返回。以下还会声明 obj对象的成员函数、成员属性。
& && && && &symbol: symbol, // 把New 函数准备构造对象 传进来的参数 symbol ,初始化给 obj 对象的成员 symbol,合约代码
& && && && &riskRatio: riskRatio,//风险比率
& && && && &atrLen: atrLen,//ATR指标长度
& && && && &enterPeriodA: enterPeriodA,// 入市 、 离市 周期
& && && && &leavePeriodA: leavePeriodA,
& && && && &enterPeriodB: enterPeriodB,
& && && && &leavePeriodB: leavePeriodB,//
& && && && &useFilter: useFilter,// 使用过滤
& && && && &multiplierN: multiplierN, // 乘数N
& && && && &multiplierS: multiplierS&&// 乘数S
& && &&&};
& && &&&obj.maxLots = maxL // 为什么不在obj 内声明、 初始化& &单品种加仓次数
& && &&&obj.lastPrice = 0; //最后价格 初始化0
& && &&&obj.symbolDetail = symbolD //合约的详细信息
& && &&&obj.status = { //obj对象的状态,&&status 也是个 对象
& && && && &symbol: symbol,//合约代码
& && && && &recordsLen: 0, //K线长度
& && && && &vm: [], //一个数组 ,用来保存 marketPosition ,openPrice , N , leavePeriod , preBreakoutFailure
& && && && &open: 0, //开仓次数
& && && && &cover: 0,//平仓次数
& && && && &st: 0, //
& && && && &marketPosition: 0, //
& && && && &lastPrice: 0, //最后价格
& && && && &holdPrice: 0, //持仓价格
& && && && &holdAmount: 0, //持仓数量
& && && && &holdProfit: 0, //持仓盈亏
& && && && &N: 0, //N值
& && && && &upLine: 0, //上线
& && && && &downLine: 0, //下线
& && && && &symbolDetail: symbolDetail, //合约的详细信息
& && && && &lastErr: &&, // 最近错误
& && && && &lastErrTime: && // 最近错误时间
& && &&&};
& && &&&obj.setLastError = function(err) {//设置 最后一次出错
& && && && &if (typeof(err) === 'undefined' || err === '') {//如果 err 参数没有传入, 火车 err 为空字符串,执行以下
& && && && && & obj.status.lastErr = &&; //给 obj.status.lastErr 赋值 空字符串
& && && && && & obj.status.lastErrTime = &&; // 同样也赋值 空字符串
& && && && && & //返回
& && && && &}
& && && && &var t = new Date(); // 获取当前时间
& && && && &obj.status.lastErr = // 把错误信息 赋值给 obj.status.lastErr
& && && && &obj.status.lastErrTime = t.toLocaleString(); // 调用了 Date 对象的方法,toLocaleString() 方法可根据本地时间把 Date 对象转换为字符串,并返回结果。
& && && && &// 赋值给 obj.status.lasrErrTime
& && &&&};
& && &&&obj.reset = function(marketPosition, openPrice, N, leavePeriod, preBreakoutFailure) { //重启函数
& && &&&& & & && && && && && &&&//& && && && && &最后一次加仓价&&, N值 , 离市周期 , 前一次失败跳出
& && && && &if (typeof(marketPosition) !== 'undefined') { //如果 marketPosition 不等于&&未定义,即 在函数调用的时候 ,全部传入参数
& && && && && & obj.marketPosition = marketP // 把 参数传进来的 marketPosition 赋值给 obj相应的 成员
& && && && && & obj.openPrice = openP // 创建obj.openPrice 参数赋值给 obj对象的相应的成员 ,最后一次加仓价
& && && && && & obj.preBreakoutFailure = preBreakoutF // 创建了 obj 对象的成员 preBreakoutFailure ,并且有 函数参数初始化, 上次突破(布尔值)
& && && && && & obj.N = N;&&// 创建obj.N, 给obj.N 赋值
& && && && && & obj.leavePeriod = leaveP // 创建了 obj对象的成员 leavePeriod 离市周期 , 函数传入参数 给其赋值
& && && && && & var pos = _bot.GetPosition(obj.symbol, marketPosition & 0 ? PD_LONG : PD_SHORT); //调用商品期货交易类库 这个模板生成的 对象_bot 的成员函数
& && && && && & // GetPosition ,传入 reset 自身对象obj 的成员symbol(这个对象管理的合约代码),根据marketPosition 选择 方向 PD_LONG 多仓, PD_SHORT 空仓,获取该
& && && && && & //合约的 一个方向的持仓信息
& && && && && & if (pos) {// 如果 返回的持仓信息 pos 不是 null ,即 有持仓信息
& && && && && && &&&obj.holdPrice = pos.P //给obj.holdPrice 赋值 持仓均价
& && && && && && &&&obj.holdAmount = pos.A //给 obj.holdAmount 赋值 持仓数量
& && && && && && &&&Log(obj.symbol, &仓位&, pos); // 在日志打印 合约代码 , 持仓信息。
& && && && && & } else {//如果 pos 是null
& && && && && && &&&throw &恢复& + obj.symbol + &的持仓状态出错, 没有找到仓位信息&;//抛出错误 , 恢复 symbol 这个合约的 时候 持仓状态出错,没有找到持仓信息。
& && && && && & }
& && && && && & Log(&恢复&, obj.symbol, &加仓次数&, obj.marketPosition, &持仓均价:&, obj.holdPrice, &持仓数量:&, obj.holdAmount, &最后一次加仓价&, obj.openPrice, &N值&, obj.N, &离市周期:&, leavePeriod, &上次突破:&, obj.preBreakoutFailure ? &失败& : &成功&);
& && && && && & //在日志打印, 合约代码 ,&&加仓次数 ,持仓均价 ,持仓数量 ,最后一次加仓价
& && && && && & obj.status.open = 1;//恢复开仓次数 1
& && && && && & obj.status.vm = [obj.marketPosition, obj.openPrice, obj.N, obj.leavePeriod, obj.preBreakoutFailure]; //给obj.status.vm 赋值
& && && && &} else {// marketPosition === 'undefined' 即 在调用该函数时 ,没有传入任何参数。
& && && && && & obj.marketPosition = 0;// 加仓次数 为0
& && && && && & obj.holdPrice = 0;// 持仓均价 0
& && && && && & obj.openPrice = 0; // 最后一次加仓价格 0
& && && && && & obj.holdAmount = 0; // 持仓量&&0
& && && && && & obj.holdProfit = 0; // 持仓 盈亏 0
& && && && && & obj.preBreakoutFailure = // test system A& &//上次突破是否失败, true即真
& && && && && & obj.N = 0; // N值&&0
& && && && && & obj.leavePeriod = leavePeriodA; // 系统A 的离市周期(界面参数) 赋值给 leavePeriod&&
& && && && &}
& && && && &obj.holdProfit = 0; // 主要用于 if条件触发
& && && && &obj.lastErr = &&; // if&&和&&else&&操作 都会执行该语句
& && && && &obj.lastErrTime = &&; // 同上
& && &&&};
& && &&&obj.Status = function() {// 更新obj 对象的 Status 属性
& && && && &obj.status.N = obj.N; // 用obj对象相应的属性去赋值 (status属性中相应的 成员) N值
& && && && &obj.status.marketPosition = obj.marketP //加仓次数 (也是持仓方向 +&&-&&代表方向, 数值代表 操作的次数,一个方向 直到 平仓)
& && && && &obj.status.holdPrice = obj.holdP
& && && && &obj.status.holdAmount = obj.holdA
& && && && &obj.status.lastPrice = obj.lastP
& && && && &if (obj.lastPrice & 0 && obj.holdAmount & 0 && obj.marketPosition !== 0) {
& && && && && & obj.status.holdProfit = _N((obj.lastPrice - obj.holdPrice) * obj.holdAmount * symbolDetail.VolumeMultiple, 4) * (obj.marketPosition & 0 ? 1 : -1);
& && && && &} else {
& && && && && & obj.status.holdProfit = 0;
& && && && &}
& && && && &return obj.
& && &&&};
& && &&&obj.Poll = function() {
& && && && &var suffix = WXPush ? '@' : '';
& && && && &// switch symbol
& && && && &_C(exchange.SetContractType, obj.symbol);
& && && && &var records = exchange.GetRecords();
& && && && &if (!records) {
& && && && && & obj.setLastError(&获取K线失败&);
& && && && && &
& && && && &}
& && && && &obj.status.recordsLen = records.
& && && && &if (records.length & obj.atrLen) {
& && && && && & obj.setLastError(&K线长度小于 & + obj.atrLen);
& && && && && &
& && && && &}
& && && && &var opCode = 0; // 0: IDLE, 1: LONG, 2: SHORT, 3: CoverALL
& && && && &var lastPrice = records[records.length - 1].C
& && && && &obj.lastPrice = lastP
& && && && &if (obj.marketPosition === 0) {
& && && && && & obj.status.upLine = 0;
& && && && && & obj.status.downLine = 0;
& && && && && & for (var i = 0; i & 2; i++) {
& && && && && && &&&if (i == 0 && obj.useFilter && !obj.preBreakoutFailure) {
& && && && && && && && &
& && && && && && &&&}
& && && && && && &&&var enterPeriod = i == 0 ? obj.enterPeriodA : obj.enterPeriodB;
& && && && && && &&&if (records.length & (enterPeriod + 1)) {
& && && && && && && && &
& && && && && && &&&}
& && && && && && &&&var highest = TA.Highest(records, enterPeriod, 'High');
& && && && && && &&&var lowest = TA.Lowest(records, enterPeriod, 'Low');
& && && && && && &&&obj.status.upLine = obj.status.upLine == 0 ? highest : Math.min(obj.status.upLine, highest);
& && && && && && &&&obj.status.downLine = obj.status.downLine == 0 ? lowest : Math.max(obj.status.downLine, lowest);
& && && && && && &&&if (lastPrice & highest) {
& && && && && && && && &opCode = 1;
& && && && && && &&&} else if (lastPrice & lowest) {
& && && && && && && && &opCode = 2;
& && && && && && &&&}
& && && && && && &&&obj.leavePeriod = (enterPeriod == obj.enterPeriodA) ? obj.leavePeriodA : obj.leavePeriodB;
& && && && && & }
& && && && &} else {
& && && && && & var spread = obj.marketPosition & 0 ? (obj.openPrice - lastPrice) : (lastPrice - obj.openPrice);
& && && && && & if (spread & (obj.N * 2)) {
& && && && && && &&&opCode = 3;
& && && && && && &&&obj.preBreakoutFailure =
& && && && && && &&&Log(obj.symbolDetail.InstrumentName, &止损平仓&, suffix);
& && && && && && &&&obj.status.st++;
& && && && && & } else if (-spread & (0.5 * obj.N)) {
& && && && && && &&&opCode = obj.marketPosition & 0 ? 1 : 2;
& && && && && & } else if (records.length & obj.leavePeriod) {
& && && && && && &&&if ((obj.marketPosition & 0 && lastPrice & TA.Lowest(records, obj.leavePeriod, 'Low')) ||
& && && && && && && && &(obj.marketPosition & 0 && lastPrice & TA.Highest(records, obj.leavePeriod, 'High'))) {
& && && && && && && && &obj.preBreakoutFailure =
& && && && && && && && &Log(obj.symbolDetail.InstrumentName, &正常平仓&, suffix);
& && && && && && && && &opCode = 3;
& && && && && && && && &obj.status.cover++;
& && && && && && &&&}
& && && && && & }
& && && && &}
& && && && &if (opCode == 0) {
& && && && && &
& && && && &}
& && && && &if (opCode == 3) {
& && && && && & _bot.Cover(obj.symbol);
& && && && && & obj.reset();
& && && && && & _G(obj.symbol, null);
& && && && && &
& && && && &}
& && && && &// Open
& && && && &if (Math.abs(obj.marketPosition) &= obj.maxLots) {
& && && && && & obj.setLastError(&禁止开仓, 超过最大持仓 & + obj.maxLots);
& && && && && &
& && && && &}
& && && && &var atrs = TA.ATR(records, atrLen);
& && && && &var N = _N(atrs[atrs.length - 1], 4);
& && && && &var account = _bot.GetAccount();
& && && && &var unit = parseInt(account.Balance * (obj.riskRatio / 100) / N / obj.symbolDetail.VolumeMultiple);
& && && && &var canOpen = parseInt(account.Balance / (opCode == 1 ? obj.symbolDetail.LongMarginRatio : obj.symbolDetail.ShortMarginRatio) / (lastPrice * 1.2) / obj.symbolDetail.VolumeMultiple);
& && && && &unit = Math.min(unit, canOpen);
& && && && &if (unit & obj.symbolDetail.MinLimitOrderVolume) {
& && && && && & obj.setLastError(&可开 & + unit + & 手 过小无法开仓&);
& && && && && &
& && && && &}复制代码
支持楼主:、
购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
载入中......
var ret =
if (opCode == 1) {
ret = _bot.OpenLong(obj.symbol, unit);
} else {
ret = _bot.OpenShort(obj.symbol, unit);
}
if (!ret) {
obj.setLastError(&下单失败&);
Log(obj.symbolDetail.InstrumentName, obj.marketPosition == 0 ? &开仓& : &加仓&, &离市周期&, obj.leavePeriod, suffix);
obj.N = N;
obj.openPrice = ret.
obj.holdPrice = ret.position.P
if (obj.marketPosition == 0) {
obj.status.open++;
}
obj.holdAmount = ret.position.A
obj.marketPosition += opCode == 1 ? 1 : -1;
obj.status.vm = [obj.marketPosition, obj.openPrice, N, obj.leavePeriod, obj.preBreakoutFailure];
_G(obj.symbol, obj.status.vm);
};
var vm =
if (RMode === 0) {
vm = _G(obj.symbol);
} else {
vm = JSON.parse(VMStatus)[obj.symbol];
}
if (vm) {
Log(&准备恢复进度, 当前合约状态为&, vm);
obj.reset(vm[0], vm[1], vm[2], vm[3], vm[4]);
} else {
if (needRestore) {
throw &没有找到& + obj.symbol + &的进度恢复信息&;
}
obj.reset();
}
function onexit() {
Log(&已退出策略...&);
}
function main() {
if (exchange.GetName().indexOf('CTP') == -1) {
throw &只支持商品期货CTP&;
}
SetErrorFilter(&login|ready|流控|连接失败|初始|Timeout&);
var mode = exchange.IO(&mode&, 0);
if (typeof(mode) !== 'number') {
throw &切换模式失败, 请更新到最新托管者!&;
}
while (!exchange.IO(&status&)) {
Sleep(3000);
LogStatus(&正在等待与交易服务器连接, & + new Date());
}
var positions = _C(exchange.GetPosition);
if (positions.length & 0) {
Log(&检测到当前持有仓位, 系统将开始尝试恢复进度...&);
}
Log(&风险系数:&, RiskRatio, &N值周期:&, ATRLength, &系统1: 入市周期&, EnterPeriodA, &离市周期&, LeavePeriodA, &系统二: 入市周期&, EnterPeriodB, &离市周期&, LeavePeriodB, &加仓系数:&, IncSpace, &止损系数:&, StopLossRatio, &单品种最多开仓:&, MaxLots, &次&);
var tts = [];
var filter = [];
var arr = Instruments.split(',');
for (var i = 0; i & arr. i++) {
var symbol = arr[i].replace(/^\s+/g, &&).replace(/\s+$/g, &&);
if (typeof(filter[symbol]) !== 'undefined') {
Log(symbol, &已经存在, 系统已自动过滤&);
}
filter[symbol] =
var hasPosition =
for (var j = 0; j & positions. j++) {
if (positions[j].ContractType == symbol) {
hasPosition =
}
}
var obj = TTManager.New(hasPosition, symbol, RiskRatio, ATRLength, EnterPeriodA, LeavePeriodA, EnterPeriodB, LeavePeriodB, UseEnterFilter, IncSpace, StopLossRatio, MaxLots);
tts.push(obj);
}
var initAccount = _bot.GetAccount();
Log(&资产信息&, initAccount);
var preTotalHold = -1;
var lastStatus = '';
while (true) {
while (!exchange.IO(&status&)) {
Sleep(3000);
LogStatus(&正在等待与交易服务器连接, & + new Date() + &\n& + lastStatus);
}
var tblStatus = {
type: &table&,
title: &持仓信息&,
cols: [&合约名称&, &持仓方向&, &持仓均价&, &持仓数量&, &持仓盈亏&, &加仓次数&, &开仓次数&, &止损次数&, &成功次数&, &当前价格&, &N&],
rows: []
};
var tblMarket = {
type: &table&,
title: &数据信息&,
cols: [&合约名称&, &合约乘数&, &保证金率&, &柱线长度&, &上线&, &下线&, &异常描述&, &发生时间&],
rows: []
};
var totalHold = 0;
var vmStatus = {};
var ts = new Date().getTime();
for (var i = 0; i & tts. i++) {
tts[i].Poll();
var d = tts[i].Status();
if (d.holdAmount & 0) {
vmStatus[d.symbol] = d.
}
tblStatus.rows.push([d.symbolDetail.InstrumentName, d.holdAmount == 0 ? '--' : (d.marketPosition & 0 ? '多' : '空'), d.holdPrice, d.holdAmount, d.holdProfit, Math.abs(d.marketPosition), d.open, d.st, d.cover, d.lastPrice, d.N]);
tblMarket.rows.push([d.symbolDetail.InstrumentName, d.symbolDetail.VolumeMultiple, _N(d.symbolDetail.LongMarginRatio, 4) + '/' + _N(d.symbolDetail.ShortMarginRatio, 4), d.recordsLen, d.upLine, d.downLine, d.lastErr, d.lastErrTime]);
totalHold += Math.abs(d.holdAmount);
}
var now = new Date();
var elapsed = now.getTime() -
var tblAssets = _bot.GetAccount(true);
var nowAccount = _bot.Account();
if (tblAssets.rows.length & 10) {
// replace AccountId
tblAssets.rows[0] = [&InitAccount&, &初始资产&, initAccount];
} else {
tblAssets.rows.unshift([&NowAccount&, &当前可用&, nowAccount], [&InitAccount&, &初始资产&, initAccount]);
}
lastStatus = '`' + JSON.stringify([tblStatus, tblMarket, tblAssets]) + '`\n轮询耗时: ' + elapsed + ' 毫秒, 当前时间: ' + now.toLocaleString();
if (totalHold & 0) {
lastStatus += &\n手动恢复字符串: & + JSON.stringify(vmStatus);
}
LogStatus(lastStatus);
if (preTotalHold & 0 && totalHold == 0) {
LogProfit(nowAccount.Balance - initAccount.Balance);
}
preTotalHold = totalH
Sleep(LoopInterval * 1000);
}
}复制代码
总评分:&经验 + 22&
论坛币 + 22&
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
论坛法律顾问:王进律师神一样的龟兔赛跑,乌龟竟然九次跑赢了兔子。
我的图书馆
神一样的龟兔赛跑,乌龟竟然九次跑赢了兔子。
某天,兔子和乌龟一起讨论到底谁跑得快,结果谁都不服输。于是,它们决定赛跑。
第一次,它们是在公路上比赛。结果兔子输了,为什么?因为兔子睡觉去了,乌龟先到达终点。
这说明了勤奋比天资重要,想成功必须要非常勤奋。
兔子不认输,它又去找乌龟比赛。
第二次,它们是在操场上比赛。但是一开始,兔子就输了。为什么?因为兔子朝相反的方向跑去了。
这说明了方向比努力重要,方向不对,努力白费。想成功必须要先选对方向。
兔子还是不认输,它又去找乌龟比赛。
第三次,它们是在草地上比赛。跑着,跑着,兔子不见了,乌龟赢了。为什么?因为兔子掉在泥潭里去了。
这说明了,想成功必须要善于发现陷阱和避开陷阱。天上不一定掉馅饼,但地上常常有陷阱。
兔子还是不认输,它又去找乌龟比赛。
第四次,它们是在山坡上比赛。兔子拼命跑啊,跑啊,但是,它还是输了。为什么,因为乌龟是滚下山的,当然更快些。
这说明了,想成功必须善于利用自己的优势。发挥优点比改正缺点,更容易成功。
兔子还是不认输,它又去找乌龟比赛。
第五次,它们是在高速公路上比赛。兔子拼命地跑,不停地跑,还是输了。为什么?因为乌龟在路边一招手,打的去了。
这说明了,要成功必须善于整合资源。
兔子还是不认输,它又去找乌龟比赛。
第六次,它们又回来操场上比赛。这回兔子跑得飞快,就到终点了,突然,兔子看到前面挂着一条横幅:谁是第一名,谁是龟儿子。兔子生气得不得了,不跑了。
这说明了,想成功要学会情绪管理。不忍小则乱大谋。
兔子还是不认输,它又去找乌龟比赛。
第七次,它们还是在操场上比赛。兔子跑着跑着,快到终点了,突然感觉尾巴被什么东西咬了一下,兔子尾巴一甩,竟将乌龟甩到前面来了。原来乌龟一直咬着兔子的尾巴奔跑,快到终点时,死命咬了兔子一口。
这说明了,要成功必须善于利用竞争对手的力量。成功需要朋友,更大的成功需要敌人。
兔子不认输,它又去找乌龟比赛。
第八次,乌龟说:“兔子,你选择了比赛方式——跑步,那我选择场地,可不可以”?
兔子毫不在意地说:“行,很公平,你说吧,在哪儿跑?”
它们是在水底下比赛的。但是一开始,兔子就输了。为什么?因为兔子不会水,一见到水就发抖,一进水,两眼发白,面青唇颤,差点就歇菜了。
这说明了成功必须要知己知彼,以己之长攻人之短,方能百战百胜。
兔子气坏了不认输,说乌龟耍诈,它又去找乌龟比赛。
第九次,应兔子的强烈要求,它们又回到了操场上比赛。兔子跑着跑着,快到终点了,突然感觉地面怎么湿乎乎的,一不小心,摔了一跤,全身立刻沾满了泥巴,眼睛也被糊住了,它像只“睁眼瞎”一样,在原地打转转,结果,毫无疑问的,乌龟又赢了。
兔子欲哭无泪,双眼通红,发誓:再也不找乌龟比赛了。
这说明了想成功必须要多动脑筋:只有想不到的,没有做不到的。
综上所述:要成功必须具备7个条件。
1、非常勤奋
2、选对方向
3、避开陷阱
4、发挥优势
5、整合资源
6、控制情绪
7、利用对手
8、知己知彼
9、无限可能
馆藏&23048
TA的最新馆藏[转]&

我要回帖

更多关于 兔子追不上乌龟 的文章

 

随机推荐