谁能帮帮我!! - 页 2 123456789...12 新评论 techno 2010.06.12 15:29 #11 sllawa3: 以上 它不在高处,在里面,在开始的时候。 int start() { DS=0; // code [删除] 2010.06.12 15:34 #12 不,它不是那样工作的......因为如果没有姿势,选择器不会改变变量的值,直到下一个姿势出现。 这就是我想做的事。 for(int i = 0; i < OrdersTotal(); i++) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if(OrderSymbol() != Symbol()) continue; if(OrderMagicNumber() != MAGA) continue; if(OrderType() == OP_BUYSTOP)ZB=1; if(OrderType() == OP_SELLSTOP)ZS=1; if(OrderType() == OP_SELL)DB=1; if(OrderType() == OP_BUYSTOP&&DB==1){OrderDelete(OrderTicket(),CLR_NONE);return(0);} if(OrderType() == OP_BUY)DS=1; if(OrderType() == OP_SELLSTOP&&DS==1){OrderDelete(OrderTicket(),CLR_NONE);return(0);} //................................................................... } if(ZB==0&&ZS==0&&DB==0&&DS==0 ) { Opn_B = true; Opn_S = true; } [删除] 2010.06.12 15:35 #13 一开始也不行......我尝试了各种方法 techno 2010.06.12 15:40 #14 再次,如果选择函数的标志被设置为mode_trades,订单将被分配到当前,而不是来自历史,所以要求收盘时间是没有意义的,它将永远等于零。 [删除] 2010.06.12 15:42 #15 订单只是同时开仓,一个挂单被触发,第二个被删除,被触发的订单在取货或止损时被关闭,这就是它停止的地方,因为没有启动循环,其中一个变量的值为1被保存...。 [删除] 2010.06.12 15:43 #16 Techno: 再次,如果选择函数的标志被设置为mode_trades,订单将被分配到当前,而不是来自历史,所以要求收盘时间是没有意义的,它将永远等于零。 我把它修好了......我自己知道,但我刚开始尝试所有的东西 techno 2010.06.12 15:46 #17 需要完整的代码。 techno 2010.06.12 15:50 #18 顺便问一下,应该是这样的吗? if(OrderType() == OP_SELL)DB=1; if(OrderType() == OP_BUY)DS=1; George 2010.06.12 15:54 #19 这样的底座能不能用?对我来说,它总是100%有效。 如果(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()==Symbol()) { ...等等... } } [删除] 2010.06.12 15:59 #20 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; //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 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 i = 0; i < OrdersTotal(); i++) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if(OrderSymbol() != Symbol()) continue; if(OrderMagicNumber() != MAGA) continue; if(OrderType() == OP_BUYSTOP)ZB=1; if(OrderType() == OP_SELLSTOP)ZS=1; if(OrderType() == OP_SELL)DB=1; if(OrderType() == OP_BUYSTOP&&DB==1){OrderDelete(OrderTicket(),CLR_NONE);return(0);} if(OrderType() == OP_BUY)DS=1; if(OrderType() == OP_SELLSTOP&&DS==1){OrderDelete(OrderTicket(),CLR_NONE);return(0);} //................................................................... //.................ТЕЙК И СТОП....................... 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); } //.................................................................... if(OrdersTotal() > 0&&TrailingStop>1)//&&OrderMagicNumber()== MAGICD1||OrderMagicNumber()== MAGIC1||OrderMagicNumber()== MAGICD||OrderMagicNumber()== MAGIC) { if(OrderType() == OP_SELL&&OrderMagicNumber()== MAGA) { if(TrailingStop> 0) { if(OrderOpenPrice() - Ask >= Z * TrailingStop * Point) { if(OrderStopLoss() > (Ask + Z*Point* TrailingStop+Z*Point*TrailingStep)) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Z*Point * TrailingStop, OrderTakeProfit(),MAGA, CLR_NONE); return(0); } } } } else if(OrderType() == OP_BUY&&OrderMagicNumber()== MAGA)//||OrderMagicNumber()== MAGIC1) { if(TrailingStop > 0) { if(Bid - OrderOpenPrice() >= Z*TrailingStop * Point) { if(OrderStopLoss() < (Bid - Z*Point * TrailingStop-Z*Point*TrailingStep)) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Z*Point * TrailingStop, OrderTakeProfit() ,MAGA, CLR_NONE); return(0); } } } } } } //OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 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); } //+------------------------------------------------------------------+ } //............................................................. 123456789...12 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
以上
它不在高处,在里面,在开始的时候。
不,它不是那样工作的......因为如果没有姿势,选择器不会改变变量的值,直到下一个姿势出现。
这就是我想做的事。
再次,如果选择函数的标志被设置为mode_trades,订单将被分配到当前,而不是来自历史,所以要求收盘时间是没有意义的,它将永远等于零。
我把它修好了......我自己知道,但我刚开始尝试所有的东西
顺便问一下,应该是这样的吗?
这样的底座能不能用?对我来说,它总是100%有效。
如果(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol())
{
...等等...
}
}