帮助我写一个EA,提前感谢 - 页 14 1...789101112131415161718192021...24 新评论 [Deleted] 2012.05.25 11:16 #131 //+------------------------------------------------------------------+ //| Канал.mq4 | //| Copyright © 2011, Лукас | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, Лукас" #property link "http://www.metaquotes.net" extern int magicnumber = 1210; extern double Nach_Lot = 0.05; extern int SL_BUY = 500; extern int TP_BUY = 700; extern int Shirina_Kanala_STOP = 200; //int SL_SELL = 400; //int TP_SELL = 400; double Lot,Lot_BUY,Lot_SELL,Min_Lot; string TF,Metka; int Ticket_Open_BUYSTOP, Ticket_Open_SELLSTOP,Ticket_Open_BUY,Ticket_Open_SELL; double Cena_Otkr_BUY,Cena_Otkr_SELL,TP_Otkr_BUY,SL_Otkr_BUY,TP_Otkr_SELL,SL_Otkr_SELL; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { Lot=Nach_Lot; Lot_BUY=Nach_Lot; Lot_SELL=Nach_Lot; Min_Lot =MarketInfo(Symbol(), MODE_MINLOT); //StopLevel = ND(MarketInfo(Symbol(), MODE_STOPLEVEL)*Point); return(0); } //***********************************************************************************************************************************// // Функция деинициализации советника-------------------------------------------------------------------------------------------------// //***********************************************************************************************************************************// int deinit() { return(0); } // Окончание функции деинициализации советника---------------------------------------------------------------------------------------// //***********************************************************************************************************************************// // Функция старта советника----------------------------------------------------------------------------------------------------------// //***********************************************************************************************************************************// int start() { Metka=Symbol()+"-''Канал(v.1.0)''"; double ZigZag_0=iCustom(NULL, 0, "ZigZag",12,5,3,1,0); double ZigZag_1=iCustom(NULL, 0, "ZigZag",12,5,3,1,1); if((CalculateCurrentOrders_STOP(Symbol())==1)&&(CalculateCurrentOrders_OPEN(Symbol())==0)) { Close_Order_BUYSTOP(); Close_Order_SELLSTOP(); } if (ZigZag_0>ZigZag_1) { if((CalculateCurrentOrders_STOP(Symbol())==0)&&(CalculateCurrentOrders_OPEN(Symbol())==0)) { Lot_BUY=Nach_Lot; Ticket_Open_BUY=OrderSend(Symbol(),OP_BUY,Lot_BUY,Ask,3,ND(Bid-SL_BUY*Point),ND(Ask+TP_BUY*Point),Metka,magicnumber,0,Green); Cena_Otkr_BUY=ND(Ask); TP_Otkr_BUY=ND(Ask+TP_BUY*Point); SL_Otkr_BUY=ND(Bid-SL_BUY*Point); TP_Otkr_SELL=SL_Otkr_BUY; SL_Otkr_SELL=TP_Otkr_BUY; Cena_Otkr_SELL=ND(Ask-Shirina_Kanala_STOP*Point); Lot_SELL=Nach_Lot*2; Ticket_Open_SELLSTOP=OrderSend(Symbol(),OP_SELLSTOP,Lot_SELL,Cena_Otkr_SELL,3,SL_Otkr_SELL,TP_Otkr_SELL,Metka,magicnumber,0,Blue); } } if((CalculateCurrentOrders_STOP(Symbol())==0)&&(CalculateCurrentOrders_OPEN(Symbol())==1)) { Lot_BUY=Nach_Lot*4; Ticket_Open_BUYSTOP=OrderSend(Symbol(),OP_BUYSTOP,Lot_BUY,Cena_Otkr_BUY,3,SL_Otkr_BUY,TP_Otkr_BUY,Metka,magicnumber,0,Blue); } if((CalculateCurrentOrders_SELL(Symbol())==1)&&(CalculateCurrentOrders_BUY(Symbol())==2)&&(CalculateCurrentOrders_STOP(Symbol())==0)) { Lot_SELL=Nach_Lot*8; Ticket_Open_SELLSTOP=OrderSend(Symbol(),OP_SELLSTOP,Lot_SELL,Cena_Otkr_SELL,3,SL_Otkr_SELL,TP_Otkr_SELL,Metka,magicnumber,0,Blue); } if((CalculateCurrentOrders_SELL(Symbol())==2)&&(CalculateCurrentOrders_BUY(Symbol())==2)&&(CalculateCurrentOrders_STOP(Symbol())==0)) { Lot_BUY=Nach_Lot*16; Ticket_Open_BUYSTOP=OrderSend(Symbol(),OP_BUYSTOP,Lot_BUY,Cena_Otkr_BUY,3,SL_Otkr_BUY,TP_Otkr_BUY,Metka,magicnumber,0,Blue); } if((CalculateCurrentOrders_SELL(Symbol())==2)&&(CalculateCurrentOrders_BUY(Symbol())==3)&&(CalculateCurrentOrders_STOP(Symbol())==0)) { Lot_SELL=Nach_Lot*32; Ticket_Open_SELLSTOP=OrderSend(Symbol(),OP_SELLSTOP,Lot_SELL,Cena_Otkr_SELL,3,SL_Otkr_SELL,TP_Otkr_SELL,Metka,magicnumber,0,Blue); } if((CalculateCurrentOrders_SELL(Symbol())==3)&&(CalculateCurrentOrders_BUY(Symbol())==3)&&(CalculateCurrentOrders_STOP(Symbol())==0)) { Lot_BUY=Nach_Lot*64; Ticket_Open_BUYSTOP=OrderSend(Symbol(),OP_BUYSTOP,Lot_BUY,Cena_Otkr_BUY,3,SL_Otkr_BUY,TP_Otkr_BUY,Metka,magicnumber,0,Blue); } if((CalculateCurrentOrders_SELL(Symbol())==3)&&(CalculateCurrentOrders_BUY(Symbol())==4)&&(CalculateCurrentOrders_STOP(Symbol())==0)) { Lot_SELL=Nach_Lot*128; Ticket_Open_SELLSTOP=OrderSend(Symbol(),OP_SELLSTOP,Lot_SELL,Cena_Otkr_SELL,3,SL_Otkr_SELL,TP_Otkr_SELL,Metka,magicnumber,0,Blue); } if((CalculateCurrentOrders_SELL(Symbol())==4)&&(CalculateCurrentOrders_BUY(Symbol())==4)&&(CalculateCurrentOrders_STOP(Symbol())==0)) { Lot_BUY=Nach_Lot*256; Ticket_Open_BUYSTOP=OrderSend(Symbol(),OP_BUYSTOP,Lot_BUY,Cena_Otkr_BUY,3,SL_Otkr_BUY,TP_Otkr_BUY,Metka,magicnumber,0,Blue); } if((CalculateCurrentOrders_SELL(Symbol())==4)&&(CalculateCurrentOrders_BUY(Symbol())==5)&&(CalculateCurrentOrders_STOP(Symbol())==0)) { Lot_SELL=Nach_Lot*512; Ticket_Open_SELLSTOP=OrderSend(Symbol(),OP_SELLSTOP,Lot_SELL,Cena_Otkr_SELL,3,SL_Otkr_SELL,TP_Otkr_SELL,Metka,magicnumber,0,Blue); } if((CalculateCurrentOrders_SELL(Symbol())==5)&&(CalculateCurrentOrders_BUY(Symbol())==5)&&(CalculateCurrentOrders_STOP(Symbol())==0)) { Lot_BUY=Nach_Lot*1024; Ticket_Open_BUYSTOP=OrderSend(Symbol(),OP_BUYSTOP,Lot_BUY,Cena_Otkr_BUY,3,SL_Otkr_BUY,TP_Otkr_BUY,Metka,magicnumber,0,Blue); } if((CalculateCurrentOrders_SELL(Symbol())==5)&&(CalculateCurrentOrders_BUY(Symbol())==6)&&(CalculateCurrentOrders_STOP(Symbol())==0)) { Lot_SELL=Nach_Lot*2048; Ticket_Open_SELLSTOP=OrderSend(Symbol(),OP_SELLSTOP,Lot_SELL,Cena_Otkr_SELL,3,SL_Otkr_SELL,TP_Otkr_SELL,Metka,magicnumber,0,Blue); } /* if((CalculateCurrentOrders_STOP(Symbol())==0)&&(CalculateCurrentOrders_OPEN(Symbol())==0)) { if (Key_BUY==true) Ticket_Open_BUYSTOP=OrderSend(Symbol(),OP_BUYSTOP,Lot_BUY,Cena_Buy,3,SL_Buy,TP_Buy1,Metka,magicnumber,0,Blue); if (Key_SELL==true) Ticket_Open_SELLSTOP=OrderSend(Symbol(),OP_SELLSTOP,Lot_SELL,Cena_Sell,3,SL_Sell,TP_Sell1,Metka,magicnumber,0,Blue); } */ return(0); } // Окончание функции старта советника------------------------------------------------------------------------------------------------// //***********************************************************************************************************************************// // Функция определения количества отложенных стоп ордеров ---------------------------------------------------------------------------// //***********************************************************************************************************************************// int CalculateCurrentOrders_STOP(string symbol) { int buys=0,sells=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==magicnumber) { if(OrderType()==OP_BUYSTOP) buys++; if(OrderType()==OP_SELLSTOP) sells++; } } return(buys+sells); } // Окончание функции определения количества отложенных стоп ордеров------------------------------------------------------------------// //***********************************************************************************************************************************// // Функция определения количества открытых ордеров ----------------------------------------------------------------------------------// //***********************************************************************************************************************************// int CalculateCurrentOrders_OPEN(string symbol) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==magicnumber) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //---- return orders volume if(buys>0) return(buys); else return(-sells); } // Окончание функции определения количества открытых ордеров--------------------------------------------------------------------------// //***********************************************************************************************************************************// // Функция определения количества открытых ордеров BUY ------------------------------------------------------------------------------// //***********************************************************************************************************************************// int CalculateCurrentOrders_BUY(string symbol) { int buys_b=0,sells_b=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==magicnumber) { if(OrderType()==OP_BUY) buys_b++; } } if(buys_b>0) return(buys_b); else return(-sells_b); } // Окончание функции определения количества открытых ордеров BUY --------------------------------------------------------------------// //***********************************************************************************************************************************// // Функция определения количества открытых ордеров SELL -----------------------------------------------------------------------------// //***********************************************************************************************************************************// int CalculateCurrentOrders_SELL(string symbol) { int buys_s=0,sells_s=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==magicnumber) { if(OrderType()==OP_SELL) sells_s++; } } if(sells_s>0) return(sells_s); else return(-buys_s); } // Окончание функции определения количества открытых ордеров SELL -------------------------------------------------------------------// //***********************************************************************************************************************************// // Функция приведения значений к точности одного тика -------------------------------------------------------------------------------// //***********************************************************************************************************************************// double ND(double A) { return(NormalizeDouble(A, Digits)); } // Окончание функции приведения значений к точности одного тика ---------------------------------------------------------------------// //***********************************************************************************************************************************// // Функция закрытия ордера BUYSTOP --------------------------------------------------------------------------------------------------// //***********************************************************************************************************************************// void Close_Order_BUYSTOP() { for(int f=0;f<OrdersTotal();f++) { if(OrderSelect(f,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=magicnumber || OrderSymbol()!=Symbol()) continue; if(OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket()); } } // Окончание функции закрытия ордера BUYSTOP ---------------------------------------------------------------------------------------// //***********************************************************************************************************************************// // Функция закрытия ордера SELLSTOP -------------------------------------------------------------------------------------------------// //***********************************************************************************************************************************// void Close_Order_SELLSTOP() { for(int f=0;f<OrdersTotal();f++) { if(OrderSelect(f,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=magicnumber || OrderSymbol()!=Symbol()) continue; if(OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket()); } } // Окончание функции закрытия ордера SELLSTOP --------------------------------------------------------------------------------------// Vitalie Postolache 2012.05.25 11:16 #132 好吧,你可以在代码中设置一个限制,比如说50手,然后以恒定的手数继续下去。 emonh 2012.05.25 11:17 #133 Lucas_SPb: 1.检查ZigZag(尽管你也可以加上寻找缩进的底点)。 2.打开一个买入订单 3.同时下一个卖出指令 4.当卖出订单触发时,我们开出一个买入订单,等等。 5.在这种情况下,我们增加了很多 啊哈哈,知道了,谢谢,现在会更容易了,测试的唯一问题是我的电脑在打开 "所有蜱虫 "时冻结到地狱。 [Deleted] 2012.05.25 11:18 #134 emonh: 啊哈哈,知道了,谢谢,现在会更容易了,测试的唯一问题是我的电脑在打开 "所有蜱虫 "时冻结到地狱。)))我不得不在我的电脑里装了很多小玩意....)))) edikjefimov 2012.05.25 11:18 #135 在演示中试了一下))出错了,没有开出0.02的座位,而是开出了0.04的待定包。 edikjefimov 2012.05.25 11:20 #136 它应该是这样的 edikjefimov 2012.05.25 11:20 #137 [Deleted] 2012.05.25 11:21 #138 )))你试过什么?把猫头鹰放在图表上? emonh 2012.05.25 11:25 #139 Lucas_SPb: )))我不得不把大量的诡计放在我的电脑里....)))) 对不起,把什么放进去? emonh 2012.05.25 11:26 #140 Lucas_SPb: )))你试过什么?把猫头鹰放在图表上? 你对谁? 1...789101112131415161718192021...24 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1.检查ZigZag(尽管你也可以加上寻找缩进的底点)。
2.打开一个买入订单
3.同时下一个卖出指令
4.当卖出订单触发时,我们开出一个买入订单,等等。
5.在这种情况下,我们增加了很多
啊哈哈,知道了,谢谢,现在会更容易了,测试的唯一问题是我的电脑在打开 "所有蜱虫 "时冻结到地狱。
啊哈哈,知道了,谢谢,现在会更容易了,测试的唯一问题是我的电脑在打开 "所有蜱虫 "时冻结到地狱。
)))我不得不把大量的诡计放在我的电脑里....))))
对不起,把什么放进去?
)))你试过什么?把猫头鹰放在图表上?
你对谁?