[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 71

 
DhP:
在这种情况下,MagicNumber不会改变,除非这是由EA代码提供的。

谢谢大家!
 
Roman.:


解决方案。

用于买入(卖出--以此类推)。

1.MA断裂 - 在第3、2和1条上获得MA值--比较。如果第3条的MA值>2,第2条<1,那就是一个突破。

2.然后--分形--穿透--做交易的信号

就MA的枚举而言--放在外部(可优化的)变量中。

Period_MA(你可以用第2步设置从2到240),MODE--(MA的计算方法--从0到3的变化范围第1步),PRICE_TYPE--(价格常数--从0到6的变化范围第1步),我听说在日内工作时MA计算平均值(收盘价不重要),在日烛工作时MA计算各日的收盘价。

周期--你在每次后续的优化中手动改变它--1、5、15、30、60、240......。

按iMA上的F1--再次仔细阅读那里的一切。

当然,还要像往常一样优化TP和止损。

P.S. 不要忘了写一份关于测试结果的信息...:-)))

TF=1分钟的测试结果没有产生盈利的变体,即使我们每天优化一次EA。
 
DhP:
当一个位置被部分关闭时,你可以改变魔术。我相信你可以很容易地写出这个。

你可能拥有mql社区所没有的知识,或者你只是不理解这个问题,或者你天真地认为OrderClose函数会改变魔力。

 
gince:

我明白,我没有初始的flag[i+1] 设置。如果是这样,我在哪里以及如何做?

如果我设置为1,那么当我启动指标时,它(指标)将等待变化。

正确的方法是这样的。

if ((flag[i]==1 || flag[i]==0) && условие продажи)
条件是未初始化的标志=0(或采取EMPTY_VALUE....)
 
sergeev:

正确的做法是这样的。

条件是未初始化标志=0(或取EMPTY_VALUE....)。

谢谢大家。我做了我想做的事。

 
volshebnik:
对TF=1分钟的测试结果没有产生盈利的选项,即使你每天优化一次EA。

TF越低,噪音就越大...
 
Roman.:

TF越低,噪音就越大...
是的,但如果该策略是正确的,在我看来,它应该在任何TF上工作,只是参数不同。TF=5分钟的测试结果也没有给出盈利的选项。
 
volshebnik:
是的,但如果该策略是正确的,在我看来,它应该在任何TF上工作,只是参数不同。对TF=5分钟的测试结果也没有给出任何有利可图的选项。

该战略在那里是正确的。我现在醉了。我正在休息。
 
sergeev:

你的代码中仍然有一个错误。

记住:挂单中的止损和接管不是基于当前价格,而是基于订单的开盘价格。



特别感谢和尊重你 :)))))

纠正了错误(希望现在所有的错误:))。)+添加的限制器。对于那些真正需要为已下订单分配魔法号码的人来说,这将是非常有用的。

好好享受吧!

#property copyright "Copyright © 2010 - 2011, Хлыстов Владимир, в редакции AMRo"
#property link      "cmillion@narod.ru, nemo811@mail.ru"
#property show_inputs
/*
Иногда требуется помочь советнику добавить ордер, но чтобы советник его принял за свой
необходим Magic номер. Для выставления ордера с таким номером и предназначен этот скрипт.
Возможна одновременная установка до 6 типов ордеров. При сбоях связи или резком движении цены
будет выполнено 10 попыток выставления ордера, после чего скрипт закончит работу.
*/
//--------------------------------------------------------------------
extern int     Magic       = 0;        //уникальный номер ордера
extern bool    BUY         = false;    //открыть ордер BUY
extern bool    BUY_STOP    = false;    //поставить ордер BUY STOP
extern bool    BUY_LIMIT   = false;    //поставить ордер BUY LIMIT
extern bool    SELL        = false;    //открыть ордер SELL
extern bool    SELL_STOP   = false;    //поставить ордер SELL STOP
extern bool    SELL_LIMIT  = false;    //поставить ордер SELL LIMIT
extern double  Lot         = 0.1;      //объем ордера
extern int     takeprofit  = 0;        //уровень выставления TP, если 0, то TP не выставляется
extern int     stoploss    = 0;        //уровень выставления SL, если 0, то SL не выставляется
extern int     DistanceSet = 40;       //расстояние от рынка для отложенника
extern int     slippage    = 3;        //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
   if (BUY)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
   }
   if (SELL)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell");
   }
   if (BUY_STOP)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Stop");
   }
   if (SELL_STOP)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Stop");
   }
   if (BUY_LIMIT)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Limit");
   }
   if (SELL_LIMIT)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Limit");
   }
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
   int error,err;
   while (true)
   {  error=true;
      if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Stop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Stop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Limit" ) error=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Limit") error=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (error==-1) //неудачная попытка
      {  
         ShowERROR();
         err++;Sleep(2000);RefreshRates();
      }
      if (error || err >10) return;
   }
return;
}                  
//--------------------------------------------------------------------
void ShowERROR()
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:   return;
      case 2:   Alert("Нет связи с торговым сервером ",Symbol());return;
      case 3:   Alert("Error неправильные параметры ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",Symbol());return;
      default:  Alert("Error  " ,err," ",Symbol());return;
   }
}
//--------------------------------------------------------------------
 
Roman.:

那里有一个真正的陌生人。我现在就像风筝一样高。我在休息。
在TF上也是如此=15分钟。在这个策略中还看不到任何 "忠诚度",可能还在前面显示出来。(祝您休息愉快))