谁能帮帮我!! - 页 6 123456789101112 新评论 [删除] 2010.06.12 17:34 #51 extern string БАЙ = "NASTROI:"; extern int StopLoss = 200; // SL для открываемого ордера extern int TakeProfit = 40; extern double TrailingStop = 3; extern double TrailingStep =0; extern string ЛОТ = "NASTROI LOT:"; extern double Lots = 0.1; // Жестко заданное колич. лотов extern double ДОЛЯ_ДЕП_ОСН_ОРД = 0; // доля от свободных средств extern double MAX_LOT = 40; extern bool NORMALIZ = false; extern string П = "EDGE:"; extern int МАКС_КОЛИЧ_ОРДЕРОВ = 111; extern double БАЛАНС_МАРЖИ=1; extern int TFCLOSE=5; extern string FLAG = "FLAGS:"; extern int BUY =1; //блок бай extern int SELL =1; //блок сел extern int MINIM=1; extern double F=1; extern int ДИСТАНЦИЯ_ВЫСТАВЛЕНИЯ_ОТЛОЖ = 5; extern int MAGA = 7777; //магик № бай extern double Z=10; //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, bool DS=0,DB=0,ZB=0,ZS=0; void deinit() { Comment(""); } int start() { //bool DS=0,DB=0,ZB=0,ZS=0; int R=1,CB=0; double Lts, FB=F,FS=F,MG,ZL=0, Min_Lot, Lts1, TPD1; bool Cls_B = false, Cls_S = false, Opn_B = false, Opn_S = false; //00000000000000000000000000000000000000000000000000000 //+------------РАСЧЁТ СТОИМОСТИ------------------------------------------------------+ // Стоимость ордеров if(БАЛАНС_МАРЖИ>0&&NORMALIZ==false) { RefreshRates(); if(AccountFreeMargin()>AccountMargin())MG=AccountFreeMargin(); //if(AccountFreeMargin()<AccountMargin())MG=0; if(БАЛАНС_МАРЖИ*AccountFreeMargin()<AccountMargin())R=0; Min_Lot = MarketInfo(Symbol(), MODE_MINLOT); if(Lots > 0 && ДОЛЯ_ДЕП_ОСН_ОРД == 0) Lts = Lots; if(ДОЛЯ_ДЕП_ОСН_ОРД > 0) Lts=MG/MarketInfo (Symbol(), MODE_MARGINREQUIRED)*ДОЛЯ_ДЕП_ОСН_ОРД; if(Lts > MAX_LOT) Lts = MAX_LOT; if(MG==0)Lts =0; if(MG>0&&Lts < Min_Lot&&MINIM==0) { R=0; Lts = 0;// Min_Lot; } if(MG>0&&Lts < Min_Lot&&MINIM==1) { Lts = Min_Lot; } Lts1=Lts; } //................................ int m; if(NORMALIZ==true&&БАЛАНС_МАРЖИ>0) { if(AccountFreeMargin()>AccountMargin())MG=AccountFreeMargin(); if(AccountFreeMargin()<AccountMargin())MG=0; Min_Lot = MarketInfo(Symbol(), MODE_MINLOT); //........................................................ if(Lots > 0 && ДОЛЯ_ДЕП_ОСН_ОРД == 0) Lts = Lots; if(ДОЛЯ_ДЕП_ОСН_ОРД>0) m=БАЛАНС_МАРЖИ*MG/MarketInfo (Symbol(), MODE_MARGINREQUIRED)*ДОЛЯ_ДЕП_ОСН_ОРД/Min_Lot; Lts = m*Min_Lot; if(Lts > MAX_LOT) Lts = MAX_LOT; if(MG==0)Lts =0; if(MG>0&&Lts < Min_Lot) { Lts =Min_Lot; // R=O; } Lts= Lts; } //................................ if(БАЛАНС_МАРЖИ==0) { RefreshRates(); Min_Lot = MarketInfo(Symbol(), MODE_MINLOT); if(Lots > 0 && ДОЛЯ_ДЕП_ОСН_ОРД == 0) Lts = Lots; if(ДОЛЯ_ДЕП_ОСН_ОРД > 0) Lts=AccountFreeMargin()/MarketInfo (Symbol(), MODE_MARGINREQUIRED)*ДОЛЯ_ДЕП_ОСН_ОРД; if(Lts > MAX_LOT) Lts = MAX_LOT; if(Lts < Min_Lot&&MINIM==0) { R=0; Lts = 0;//Min_Lot; } if(Lts < Min_Lot&&MINIM==1) { Lts = Min_Lot; } Lts1=Lts; } for(int x = 0; x < OrdersTotal(); x++) { if(OrderSelect(x, SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MAGA) switch(OrderType()) { case 0:DB=1;break; case 1:DS=1;break; case 4:ZB=1;break; case 5:ZS=1;break; } //if(OrderType() == OP_BUYSTOP)ZB=1; //if(OrderType() == OP_SELLSTOP)ZS=1; //if(OrderType() == OP_SELL)DB=1; if(OrderType() == OP_SELLSTOP&&DB==1){OrderDelete(OrderTicket(),CLR_NONE);return(0);} // if(OrderType() == OP_BUY)DS=1; if(OrderType() == OP_BUYSTOP&&DS==1){OrderDelete(OrderTicket(),CLR_NONE);return(0);} //................................................................... //.................ТЕЙК И СТОП....................... for(int y = 0; y < OrdersTotal(); y++) { if(!OrderSelect(y, SELECT_BY_POS, MODE_TRADES)) continue; if(OrderSymbol() != Symbol()) continue; if(OrderMagicNumber() != MAGA) continue; } if(OrderType() == OP_BUY&&OrderStopLoss()==0||OrderTakeProfit()==0&&StopLoss>0) { OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point , OrderOpenPrice()+TakeProfit*Point ,MAGA, CLR_NONE); return(0); } if(OrderType() == OP_SELL&&OrderStopLoss()==0||OrderTakeProfit()==0&&StopLoss>0) { OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point , OrderOpenPrice()-TakeProfit*Point ,MAGA, CLR_NONE); return(0); } } //.................................................................... //OOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO if(ZB==0&&ZS==0&&DB==0&&DS==0 ) { Opn_B = true; Opn_S = true; } //OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO // Открытие ордеров while(true) { //OOOOOOOOOOOOOOOOOOOOOOOO ОСНОВНЫЕ OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO if(Opn_B == true && BUY ==1) { // CS=1; Alert("Попытка BUY"); if(Opn_B == true && BUY ==1) OrderSend(Symbol(), OP_BUYSTOP,FB*Lts,Ask+Z*ДИСТАНЦИЯ_ВЫСТАВЛЕНИЯ_ОТЛОЖ*Point,2,0,0,"",MAGA,0,Aqua); if(Fun_Error(GetLastError()) == 1) continue; // return(0); } //-------------------------------------------------- if(Opn_S == true&&SELL==1) { // CB=1; Alert("Попытка SELL"); if(Opn_S == true&&SELL==1) OrderSend(Symbol(), OP_SELLSTOP, FS*Lts,Bid-Z*ДИСТАНЦИЯ_ВЫСТАВЛЕНИЯ_ОТЛОЖ*Point,2,0,0,"",MAGA,0,Orange);//TimeCurrent()+TIMELIVE*60 if(Fun_Error(GetLastError()) == 1) continue; return(0); } break; } return(0); } //+------------------------------------------------------------------+ int Fun_Error(int Error) { switch(Error) { case 4: Alert("Торговый сервер занят. Пробуем ещё раз.."); Sleep(3000); return(1); case 135: Alert("Цена изменилась. Пробуем ещё раз.."); RefreshRates(); return(1); case 136: Alert("Нет цен. Ждём новый тик.."); while(RefreshRates() == false) Sleep(1); return(1); case 137: Alert("Брокер занят. Пробуем ещё раз.."); Sleep(3000); return(1); case 146: Alert("Подсистема торговли занята. Пробуем ещё.."); Sleep(500); return(1); case 2: Alert("Общая ошибка."); return(0); } //+------------------------------------------------------------------+ } //............................................................. [删除] 2010.06.12 17:37 #52 选项不太可能起作用,正如我已经写过的,选项不太可能起作用......。 techno 2010.06.12 17:40 #53 首先,我说过要在START FUNCTION里面声明变量,这里我们又有25个。 第二,你为什么需要第二个循环?还有,你为什么要在我的上面添加额外的支票? techno 2010.06.12 17:41 #54 当你通过订单并保存它们的类型时,保存它们的票据和它们的止损点,这样你就不必经过10次反复。 [删除] 2010.06.12 17:41 #55 Techno: 他的代码乱七八糟,循环中同样的检查重复了10次,有一大堆错误,甚至修改函数有一个魔力而不是延迟到期时间......这都是废话,都是我们没有解释清楚的错...... 这不是糟糕的解释,而是错误的解释,你以不同的方式失去了我最初的东西,而且是同一个错误。 [删除] 2010.06.12 17:43 #56 Techno: 首先,我说过要在START FUNCTION里面声明变量,这里我们又有25个。 第二,你为什么需要第二个循环?还有,你为什么要在我的上面添加额外的支票? 我把它放在同样的地方(在开始的地方),但我不想删除挂单,其他的东西都是一样的(没有归零)。 techno 2010.06.12 17:50 #57 sllawa3: 你可以看到,在那里(开始里面),那么挂单只是没有被删除,但其他的东西都是一样的(没有重置) 让我们从逻辑上想一想,这4个变量在每次勾选时 都会重置,对吗? 第二个问题,如果没有订单,那么没有任何东西被分配给这些变量,它们仍然是零,对吗? 以及最后一个问题,如果它们等于零,怎么可能不被归零? [删除] 2010.06.12 17:53 #58 并将该修改完全删除(连同第二个周期)......同样的事情 [删除] 2010.06.12 17:54 #59 Techno: 让我们从逻辑上想一想,这4个变量在每次勾选时都会重置,对吗? 第二个问题,如果没有订单,那么没有任何东西被分配给这些变量,它们仍然是零,对吗? 以及最后一个问题,如果它们是零,怎么可能不归零? 好吧,试试吧,你自己看看......。我也在想同样的事情... techno 2010.06.12 17:56 #60 你不能胡乱地把东西放好,再放进去,你必须思考。你知道一切,你认为一切,但结果是荒谬的。 只要写一个循环,每个订单都会有一张票和一个位置,但不要写其他东西。你应该把代码放在这里 123456789101112 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
首先,我说过要在START FUNCTION里面声明变量,这里我们又有25个。
第二,你为什么需要第二个循环?还有,你为什么要在我的上面添加额外的支票?
他的代码乱七八糟,循环中同样的检查重复了10次,有一大堆错误,甚至修改函数有一个魔力而不是延迟到期时间......这都是废话,都是我们没有解释清楚的错......
这不是糟糕的解释,而是错误的解释,你以不同的方式失去了我最初的东西,而且是同一个错误。
首先,我说过要在START FUNCTION里面声明变量,这里我们又有25个。
第二,你为什么需要第二个循环?还有,你为什么要在我的上面添加额外的支票?
我把它放在同样的地方(在开始的地方),但我不想删除挂单,其他的东西都是一样的(没有归零)。
你可以看到,在那里(开始里面),那么挂单只是没有被删除,但其他的东西都是一样的(没有重置)
让我们从逻辑上想一想,这4个变量在每次勾选时 都会重置,对吗?
第二个问题,如果没有订单,那么没有任何东西被分配给这些变量,它们仍然是零,对吗?
以及最后一个问题,如果它们等于零,怎么可能不被归零?
让我们从逻辑上想一想,这4个变量在每次勾选时都会重置,对吗?
第二个问题,如果没有订单,那么没有任何东西被分配给这些变量,它们仍然是零,对吗?
以及最后一个问题,如果它们是零,怎么可能不归零?
好吧,试试吧,你自己看看......。我也在想同样的事情...
你不能胡乱地把东西放好,再放进去,你必须思考。你知道一切,你认为一切,但结果是荒谬的。
只要写一个循环,每个订单都会有一张票和一个位置,但不要写其他东西。你应该把代码放在这里