我将写一个免费的mql4顾问 - 页 3

 
Andrey Vaskin:
为了获得这方面的经验,我将免费为你的有趣想法和策略编写25个EA。

1.看价格杯FORTS。


2.如果在1分钟内,红柱是蓝柱的3倍*,则买入。如果是相反的情况就卖出。


3.关闭你买入的头寸--如果蓝条在1分钟内是红条的3倍。如果在1分钟内,红柱比蓝柱大3倍,则关闭已售出的头寸。


4)循环往复。

---


*指的是3次或以上。

"3次 "和 "1分钟 "必须在猫头鹰参数中设置。

还需要一个止损点。

堆栈的图片(卖出/买入订单的数量)。

数量也可以从市场概况中获取。

 
Alexander Pavlov:

1.看一下价格玻璃。


2.如果在1分钟内,红柱是蓝柱的3倍*,则买入。如果是相反的情况就卖出。


3.关闭购买的头寸--如果蓝条在1分钟内是红条的3倍。如果在1分钟内,红柱比蓝柱大3倍,则关闭已售出的头寸。


4)循环往复。

---


*指的是3次或以上。

"3次 "和 "1分钟 "必须在猫头鹰参数中设置。

还需要一个止损点。

堆栈的图片(卖出/买入订单的数量)。

数量也可以从市场概况中获取。

这是MT5,作者只问了MT4下的任务。
 
Vitaly Muzichenko:

他们是关于随机指标、RSI MACD和其他被称为振荡器的垃圾,他们把故事画得非常好,但我没有遇到一个专家顾问,甚至保持了平衡,更不用说盈利了。

但人们希望不断地用这些无用的指标来搅动一些东西。

我认为非常奇怪的是,他们从一个版本的MT到另一个版本的MT已经好几年了。谁需要他们?可能只是为了一个样本程序代码,但人们认为,要在他们身上交易))))

垃圾?好吧,给我看一个不是垃圾的例子。另外,你没有看到的东西并不意味着它不存在。
 
Tapochun:
垃圾?好吧,给我一个不是垃圾的例子。另外,你没有看到的东西并不意味着它不存在。
我所看到的唯一不是垃圾的东西是关于烛台形态的。
 
Vitaly Muzichenko:
我所看到的唯一没有排水的东西是在烛台形态上。
我的也没有排水,这是你的话。而且那里没有任何模式。
 
Leanid Aladzyeu:
我的也不是齐头并进,这些都是你说的。而且没有什么规律。
我此刻并不是指数学。我写的是纯粹的指标。你的是好的。
 

帮助修复

EA放了4个挂单

2、买入和卖出止损

2 买入和卖出限额

我不知道如何互换挂单,但我不知道应该把订单放在什么距离。

这与买入头寸和卖出止损是一样的。

在所有订单下达后,应在新的订单触发前下达新的订单

我有很多亏损的手,但如果我换了订单,它们会被减去。


//| iiiiiiiiiiiiiii_buy_sell.mq4|

//||

//||

//+------------------------------------------------------------------+

extern int N = 100; // 仓库和卖场(单独计算)允许有一百件。


外置双数 Lots = 0.01; // lot


外部int PROF = 100; // 拖曳式止损,从一百个点的利润开始。

extern int TS = 200; // 在价格后面的止损上拉动它。

extern int STEP = 200; // 两个止损单之间的距离

外置 int TP = 10000; //取舍顺序

extern int SL = 10000; // 接受订单

外部 bool Buy = false; // 只买不卖

外部 bool Sell = true; // 只卖出。

外部双倍 PROSADKA = 0.5; // 当权益等于或小于这个余额的分数时

外来的int magicbuy = 777;

外来的int magicsell = 888;


int M;

双重buystop_OP, sellstop_OP。

双重selllimit_OP, buylimit_OP。


int start()

{

// ---------------------------------------------------------------------


// ---------------------------------------------------------------------

//看看我们有哪些订单。

int buy = 0,sell = 0。

int buystop = 0,sellstop = 0。

int selllimit = 0,buyylimit = 0。

int buys = 0,sells = 0。

int Total = 0。

for(int i = 0; i < OrdersTotal(); i ++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。

如果(OrderMagicNumber() !=magicbuy && OrderMagicNumber() !=magicsell) 继续。

如果(OrderType() == OP_BUYSTOP)

buystop = OrderTicket()。

如果(OrderType() == OP_BUYLIMIT)

buylimit = OrderTicket()。

如果(OrderType() == OP_BUYSTOP || OrderType() == OP_BUYLIMIT || OrderType() == OP_BUY)

买了++。

如果(OrderType() == OP_SELLSTOP)

sellstop = OrderTicket()。

如果(OrderType() == OP_SELLLIMIT)

selllimit = OrderTicket();

如果(OrderType() == OP_SELLSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELL )

售价++。

共计++。

}

// ---------------------------------------------------------------------

int LET = 0。

如果(AccountEquity()/AccountBalance()< PROSADKA)

LET = 1; // 如果缩减量很高--禁止放置新头寸

// ---------------------------------------------------------------------

// 设置新的交易。

if(LET == 0 && TimeCurrent() && M != iTime(Symbol(),1,0)) // 一分钟一次

{

如果( buystop < 1 && buys < N && Buy == true)

{

buystop_OP =NormalizeDouble(Ask+STEP*Point,Digits);

buystop = OrderSend(Symbol(,OP_BUYSTOP,Lots,buystop_OP,10,buystop_OP-SL*Point,buystop_OP+TP*Point,NULL,magicbuy,0,Blue);

}

如果( buylimit < 1 && buys < N && Buy == True)

{

buylimit_OP = NormalizeDouble(Ask-STEP*Point,Digits)。

buylimit = OrderSend(Symbol(,OP_BUYLIMIT,Lots,buylimit_OP,100,buylimit_OP-SL*Point,buylimit_OP+TP*Point,NULL,magicbuy,0,Red)。

}

如果( sellstop < 1 && sells < N && Sell == true)

{

sellstop_OP = NormalizeDouble(Bid-STEP*Point,Digits)。

sellstop = OrderSend(Symbol(,OP_SELLSTOP,Lots,sellstop_OP,10,sellstop_OP+SL*Point,sellstop_OP-TP*Point,NULL,magicsell,0,Red);

}

如果( selllimit < 1 && sells < N && Sell == True)

{

selllimit_OP = NormalizeDouble(Bid+STEP*Point,Digits)。

selllimit = OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_OP,100,selllimit_OP+SL*Point,selllimit_OP-TP*Point,NULL,Magicsell,0,Blue)

}

M = iTime(Symbol(),1,0)。

}

// ---------------------------------------------------------------------

// 如果订单与价格的距离超过了TS,就把它拖到靠近价格的地方。

如果(OrderSelect(buystop,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_BUYSTOP && OrderOpenPrice() > Ask + TS*Point)

OrderModify(buystop,Ask + TS*Point,Ask + TS*Point-SL*Point,Ask + TS*Point+TP*Point,0,DeepSkyBlue) 。

如果(OrderSelect(sellstop,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_SELLSTOP && OrderOpenPrice() < Bid - TS*Point)

OrderModify(sellstop,Bid - TS*Point,Bid - TS*Point+SL*Point, Bid - TS*Point-TP*Point,0,Orange)。

如果(OrderSelect(selllimit,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_SELLLIMIT && OrderOpenPrice() > Bid + TS*Point)

OrderModify(selllimit,Bid + TS*Point,Bid + TS*Point+SL*Point,Bid + TS*Point-TP*Point,0,DeepSkyBlue) 。

如果(OrderSelect(buyimit,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_BUYLIMIT && OrderOpenPrice() < Ask - TS*Point)

OrderModify(buyimit,Ask - TS*Point,Ask - TS*Point-SL*Point,Ask - TS*Point+TP*Point,0,Orange) 。

// ---------------------------------------------------------------------

// 如果订单利润大于PROF的止损点,并且离价格比TS更远,则在价格后面拖动这个止损点。

for(i = 0; i < OrdersTotal(); i ++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。

如果(OrderType() == OP_BUY && (Ask - OrderOpenPrice())/Point > PROF && OrderStopLoss() < NormalizeDouble(Ask - TS*Point, Digits))

OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask - TS*Point,Digits),OrderTakeProfit(),0,Blue) 。

如果(OrderType() == OP_SELL && (OrderOpenPrice() - Bid)/Point > PROF && OrderStopLoss() > NormalizeDouble(Bid + TS*Point,Digits)

OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid + TS*Point,Digits),OrderTakeProfit(),0,Red)

}

return(0);

}

 

该代码的格式应该是这样的(SRC)。

//|                                   iiiiiiiiiiiiiiiii_buy_sell.mq4 |

//|                                                                  |

//|                                                                  |

//+------------------------------------------------------------------+

extern int N = 100;       // баев и сэллов (считаем отдельно) разрешаем по стока штук иметь



extern double Lots = 0.01;  // лот



extern int PROF = 100;    // тралить стоп начнем с профита во стока пипсов

extern int TS = 200;      // тащить его станем на стока сзади пип за ценой

extern int STEP = 200;    // расстояние меджу отложками

extern int TP = 10000;     // тейк ордеров

extern int SL = 10000;     // тейк ордеров

extern bool Buy = false;    // только покупать

extern bool Sell = true;   // только продавать

extern double PROSADKA = 0.5;   // когда эквити равно или менее вот такой части от баланса

extern int magicbuy = 777;

extern int magicsell = 888;



int M;

double buystop_OP, sellstop_OP;

double selllimit_OP, buylimit_OP;



int start()

  {

             // ---------------------------------------------------------------------

         



             // ---------------------------------------------------------------------

             // смотрим, какие ордера у нас есть:

                 int buy = 0,sell = 0;

                 int buystop = 0,sellstop = 0;

                 int selllimit = 0,buylimit = 0;

                 int buys = 0, sells = 0;

                 int Total = 0;

                 for(int i = 0; i < OrdersTotal(); i ++)

                   {

                     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

                        if(OrderMagicNumber() != magicbuy && OrderMagicNumber() != magicsell) continue;

      

                        

                        

                           if(OrderType() == OP_BUYSTOP)

                              buystop = OrderTicket();

                                

                           if(OrderType() == OP_BUYLIMIT)

                              buylimit = OrderTicket();

                              

                           if(OrderType() == OP_BUYSTOP || OrderType() == OP_BUYLIMIT || OrderType() == OP_BUY)   

                              buys ++;

                           

                           if(OrderType() == OP_SELLSTOP)

                              sellstop = OrderTicket();

                              

                           if(OrderType() == OP_SELLLIMIT)

                              selllimit = OrderTicket();

                              

                            if(OrderType() == OP_SELLSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELL )

                              sells ++;    

                        

                        Total ++;       

                   }

             

             

           

             // ---------------------------------------------------------------------

                 int LET = 0;

                 if (AccountEquity()/AccountBalance() < PROSADKA)

                    LET = 1;  // если просадки до фига - запрет на выставление новых отложек

           

             // --------------------------------------------------------------------- 

             // выставление отложек :

             if(LET == 0 && TimeCurrent() && M != iTime(Symbol(),1,0)) // раз в минуту

               {   

                 

                 if ( buystop < 1 && buys < N && Buy == true)

                     {

                        buystop_OP = NormalizeDouble(Ask+STEP*Point,Digits);

                        buystop = OrderSend(Symbol(),OP_BUYSTOP,Lots,buystop_OP,10,buystop_OP-SL*Point,buystop_OP+TP*Point,NULL,magicbuy,0,Blue);

                     }

                     

                if ( buylimit < 1 && buys < N && Buy == True)

                     {

                        buylimit_OP = NormalizeDouble(Ask-STEP*Point,Digits);

                        buylimit = OrderSend(Symbol(),OP_BUYLIMIT,Lots,buylimit_OP,100,buylimit_OP-SL*Point,buylimit_OP+TP*Point,NULL,magicbuy,0,Red);     

                     }

                     

                 if ( sellstop < 1 && sells < N && Sell == true)

                     {

                        sellstop_OP = NormalizeDouble(Bid-STEP*Point,Digits);

                        sellstop = OrderSend(Symbol(),OP_SELLSTOP,Lots,sellstop_OP,10,sellstop_OP+SL*Point,sellstop_OP-TP*Point,NULL,magicsell,0,Red);

                     }

                

                if ( selllimit < 1 && sells < N && Sell == True)

                     {

                       selllimit_OP = NormalizeDouble(Bid+STEP*Point,Digits);

                       selllimit = OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_OP,100,selllimit_OP+SL*Point,selllimit_OP-TP*Point,NULL,magicsell,0,Blue);

                     }

                     

                

                

                 M = iTime(Symbol(),1,0);

               }

             

             // --------------------------------------------------------------------- 

             // еси отложки дальше чем TS от цены, подтаскиваем их поближе :

             if (OrderSelect(buystop,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_BUYSTOP && OrderOpenPrice() > Ask + TS*Point)

                OrderModify(buystop,Ask + TS*Point,Ask + TS*Point-SL*Point,Ask + TS*Point+TP*Point,0,DeepSkyBlue);

             

             if (OrderSelect(sellstop,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_SELLSTOP && OrderOpenPrice() < Bid - TS*Point)

                OrderModify(sellstop,Bid - TS*Point,Bid - TS*Point+SL*Point,Bid - TS*Point-TP*Point,0,Orange);

             

             if (OrderSelect(selllimit,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_SELLLIMIT && OrderOpenPrice() > Bid + TS*Point)

                OrderModify(selllimit,Bid + TS*Point,Bid + TS*Point+SL*Point,Bid + TS*Point-TP*Point,0,DeepSkyBlue);

             

             if (OrderSelect(buylimit,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_BUYLIMIT && OrderOpenPrice() < Ask - TS*Point)

                OrderModify(buylimit,Ask - TS*Point,Ask - TS*Point-SL*Point,Ask - TS*Point+TP*Point,0,Orange);

            

             // --------------------------------------------------------------------- 

             // еси профит ордера больше PROF  стоп его дальше чем TS от цены, тралим этот стоп за ценой :

             for(i = 0; i < OrdersTotal(); i ++)

                   {

                     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

                     

                        if (OrderType() == OP_BUY && (Ask - OrderOpenPrice())/Point > PROF && OrderStopLoss() < NormalizeDouble(Ask - TS*Point,Digits))

                           OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask - TS*Point,Digits),OrderTakeProfit(),0,Blue);

             

                        if (OrderType() == OP_SELL && (OrderOpenPrice() - Bid)/Point > PROF && OrderStopLoss() > NormalizeDouble(Bid + TS*Point,Digits))

                           OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid + TS*Point,Digits),OrderTakeProfit(),0,Red);

             

                   }

             

          

   return(0);

  }
 
Andrey Vaskin:

为了获得这方面的经验,我将免费为你的有趣想法和策略编写25个EA。

只剩下19个EA了

下午好,我又在这里的另一个主题中写道。


我有一个二元期权的策略。一般来说,其本质是:使用周期为20的移动平均线,我确定趋势,使用ADX,我定义其强度(通常在视觉值超过25时,我将其定义为强势),使用图形分析,我定义进入点(通常是早晨、黄昏之星、锤子和 "挂果",我不考虑具有对称阴影的十字星,因为我认为它们是矛盾的)。在所需模型的蜡烛收盘时,我在5点钟方向进入(我在D1上手动检查了6个月的统计数据:6个月内最多只有一个信号。H4不被考虑,因为不同经纪商的蜡烛几何图形的收盘时间不同)。

一般来说,在我收到的统计数据上,平均每个工具一个月0.7-3%(在交易中总是输入1%的存款),我手动扫描了5个工具(而我在期权上使用的经纪人有42个工具,手动所有的统计数据要通过很多工作来完成)。我不考虑新闻对结果的影响,以后我可以从终端发布文件,上面有我的标记,我在哪里进场,在什么时候到期,我在哪里获利,我在哪里亏损等等。我的经纪人使用的是MT4终端。也许有人有一些建议,如何改进这个策略?

在描述中,我描述了大致的想法,如果专家顾问能够自动改变每个时期的交易价值(例如每月一次),那就更好了。

 
Adelaur:
在回复时,光标有时会跳到引用栏,而且不会跳出来。如何处理:论坛:回复时光标跳到引文中