[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 642

 
gordeef:

我对反转和修正很小心,因为它是。但是关于趋势耗尽,我也很感兴趣,我在论坛上闲逛,也看了CodeBase,但没有遇到任何关于这个话题的指数。阅读你的结果会很有趣。我还有一个问题,他们给我发了一个控制我的损失和利润的EA,就像图片中的那样,它应该可以工作,但问题是,它有15点的利润,我看到价格可能会更高,如果我在一个或另一个交易中增加利润,可能会破坏EA的一般计算和操作?
我想这个问题的正确答案可能就在我的专家顾问的内心里......也许会有更有经验的同志来回答这个问题......。我认为他们的答案将更多地来自于他们的经验--我只是一个初学者......。:)
 
artmedia70:

好的。谢谢你,维克多。到目前为止,它的工作是正确的。到目前为止,因为我已经很久没有关注它了,但以前从未有它为我输出过《趋势》。就是现在。


我知道总有一个更强大的巫师-巫师为一个巫师-崇拜者服务......。:)

当然,这都是在开玩笑,但是......。维克多,我想不只是盲目地复制正确的解决方案,而且要找出并了解 狗藏在哪里,问题的本质是什么,以及这种我无法理解的代码行为?


逻辑方面的问题。仅此而已。试着画方框图。它有助于
 

我还有一个问题:起初我是做了N多行,但后来我意识到其中有一行是多余的,把它放在数字百分比形式的括号里会更合适,所以我把它去掉,放在刚好有空间的那行旁边。

起初就是这样的。


而现在的情况就是这样。


我被过去事件的回声所困扰......当EA第一次启动时,在新的勾股价到来之前,它总是 显示它原来的...虽然它已经很久没有出现在代码中 了。鬼魂从哪里来?

 
artmedia70:

另一个问题出现了:起初我是做了好几行,但后来我意识到其中有一行是多余的,把它放在数字百分比形式的括号里会更合适,所以我把它去掉,放在刚好有空间的那行旁边。

起初就是这样的。


而现在的情况就是这样。


我被过去事件的回声所困扰......当EA第一次启动时,在新的勾股价到来之前,它总是 显示它原来的...虽然它已经很久没有出现在代码中 了。鬼魂从哪里来?





你必须看一下代码。把逻辑拆开。
 
Vinin:

逻辑上的问题。仅此而已。试着画方框图。帮助

:):)谢谢你...呃...我的地板上已经铺上了这样的 "格子呢"......妈妈咪呀!这三句话似乎没有什么逻辑。事实证明,当你检查时:如果是第1项,那么就做,如果你不做第1项,当然就会有第2项。如果第2次失败,第3次就会随之而来......

不...是这样的:如果是第1次,那么就像这样......否则,如果是第2次,我们就做so-c,否则,如果不是第1次,也不是第2次,我们就做第3次,如果不是第1次,也不是第2次,也不是第3次,那我们就寻找逻辑上的错误......

哦...我自己也完全糊涂了......好吧,维克多,你的加法表现得很正确,现在我将尝试理解为什么我还需要一个else 运算符,而这个运算符似乎在那个地方出现了这个 "否则",在我绞尽脑汁之后...。

谢谢你的建议。

 
Vinin:

你必须看一下代码。要理清逻辑。

几乎没有任何逻辑可言--简单地按顺序一个接一个地输出行......

/--------------------------------------------------------------- 1 --
// Функция вывода на экран графических сообщений.
//--------------------------------------------------------------- 2 --
  int Informations()
  {
   int   Win_ind;                     // Номер окна индикатора
   int   x,y;
   
   trH4     =Trend_PSAR(NULL,240);  // Четырёхчасовой тренд
   trH1     =Trend_PSAR(NULL,60);   // Часовой тренд
   trM30    =Trend_PSAR(NULL,30);   // Получасовой тренд
   trM15    =Trend_PSAR(NULL,15);   // 15-ти минутный тренд

//--------------------------------------------------------------- 3 --
   Win_ind= WindowFind("Info");        // Ищем номер окна индикатора
   if (Win_ind<0)return;               // Если такого окна нет, уходим
//--------------------------------------------------------------- 4 --
   x =10; y =17;
   ObjectCreate("Equ",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Equ",OBJPROP_XDISTANCE,x);
   ObjectSet("Equ",OBJPROP_YDISTANCE,y);
   ObjectSetText("Equ",    "Свободные средства",9,"Tahoma",Gold);
   
   ObjectCreate("EquVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("EquVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("EquVal",OBJPROP_YDISTANCE,y);
   ObjectSetText("EquVal",DoubleToStr(Equ_NEW,2),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("Prof",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Prof",OBJPROP_XDISTANCE,x);
   ObjectSet("Prof",OBJPROP_YDISTANCE,y*2);
   ObjectSetText("Prof",   "Уровень фиксации прибыли (      %)",9,"Tahoma",Gold);
   
   ObjectCreate("ProfVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ProfVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("ProfVal",OBJPROP_YDISTANCE,y*2);
   ObjectSetText("ProfVal", DoubleToStr(Equ_OLD+EquPerc,2),9,"Tahoma",Yellow);
//--------------------------------------------------------------------    
   ObjectCreate("Perc",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Perc",OBJPROP_XDISTANCE,x*18);
   ObjectSet("Perc",OBJPROP_YDISTANCE,y*2);
   ObjectSetText("Perc", DoubleToStr(PercentEquityForClose,1),9,"Tahoma",Yellow);
   
//--------------------------------------------------------------------   
   ObjectCreate("Tral",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Tral",OBJPROP_XDISTANCE,x);
   ObjectSet("Tral",OBJPROP_YDISTANCE,y*3);
   ObjectSetText("Tral",   "Уровень включения трала",9,"Tahoma",Gold);
   
   ObjectCreate("TralVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("TralVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("TralVal",OBJPROP_YDISTANCE,y*3);
   ObjectSetText("TralVal", DoubleToStr(Equ_OLD-EquPerc,2),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("Wloss",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Wloss",OBJPROP_XDISTANCE,x);
   ObjectSet("Wloss",OBJPROP_YDISTANCE,y*4);
   ObjectSetText("Wloss",  "Порог выставления безубытка",9,"Tahoma",Gold);
   
   ObjectCreate("WlossVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("WlossVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("WlossVal",OBJPROP_YDISTANCE,y*4);
   ObjectSetText("WlossVal", DoubleToStr(LevelProfit,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("WlossPP",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("WlossPP",OBJPROP_XDISTANCE,x);
   ObjectSet("WlossPP",OBJPROP_YDISTANCE,y*5);
   ObjectSetText("WlossPP","Размер безубытка в пунктах",9,"Tahoma",Gold);
   
   ObjectCreate("WlossPPVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("WlossPPVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("WlossPPVal",OBJPROP_YDISTANCE,y*5);
   ObjectSetText("WlossPPVal",DoubleToStr(LevelWLoss,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("ATR",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ATR",OBJPROP_XDISTANCE,x);
   ObjectSet("ATR",OBJPROP_YDISTANCE,y*6);
   ObjectSetText("ATR",    "Волатильность рынка",9,"Tahoma",Gold);
   
   ObjectCreate("ATRVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ATRVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("ATRVal",OBJPROP_YDISTANCE,y*6);
   ObjectSetText("ATRVal", DoubleToStr(VolATR,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("TP",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("TP",OBJPROP_XDISTANCE,x);
   ObjectSet("TP",OBJPROP_YDISTANCE,y*7);
   ObjectSetText("TP",     "Размер Take Profit",9,"Tahoma",Gold);
   
   ObjectCreate("TPVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("TPVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("TPVal",OBJPROP_YDISTANCE,y*7);
   ObjectSetText("TPVal", DoubleToStr(TPatr,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("trH4",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trH4",OBJPROP_XDISTANCE,x);
   ObjectSet("trH4",OBJPROP_YDISTANCE,y*9);
   
   ObjectCreate("ArrowH4",OBJ_LABEL,Win_ind,0,0,0,0);
   ObjectSet("ArrowH4",OBJPROP_XDISTANCE,x*8);
   ObjectSet("ArrowH4",OBJPROP_YDISTANCE,y*9);

   if (trH4==1)
      {
         ObjectSetText("trH4","Тренд H4",9,"Tahoma",Lime);
         ObjectSetText("ArrowH4",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowH4",DoubleToStr(trH4,0),9,"Tahoma",Lime);
      }
   else if (trH4==-1)
      {
         ObjectSetText("trH4","Тренд H4",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowH4",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowH4",DoubleToStr(trH4,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trH4","Тренд H4",9,"Tahoma",LightGray);
         ObjectSetText("ArrowH4",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowH4",DoubleToStr(trH4,0),9,"Tahoma",LightGray);
      }
//--------------------------------------------------------------------   
   ObjectCreate("trH1",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trH1",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trH1",OBJPROP_YDISTANCE,y*9);
   
   ObjectCreate("ArrowH1",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowH1",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowH1",OBJPROP_YDISTANCE,y*9);
   
   if (trH1==1)
      {
         ObjectSetText("trH1","Тренд H1",9,"Tahoma",Lime);
         ObjectSetText("ArrowH1",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowH1",DoubleToStr(trH1,0),9,"Tahoma",Lime);
      }
   else if (trH1==-1)
      {
         ObjectSetText("trH1","Тренд H1",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowH1",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowH1",DoubleToStr(trH1,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trH1","Тренд H1",9,"Tahoma",LightGray);
         ObjectSetText("ArrowH1",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowH1",DoubleToStr(trH1,0),9,"Tahoma",LightGray);
      }
//--------------------------------------------------------------------   
   ObjectCreate("trM30",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM30",OBJPROP_XDISTANCE,x);
   ObjectSet("trM30",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM30",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM30",OBJPROP_XDISTANCE,x*8);
   ObjectSet("ArrowM30",OBJPROP_YDISTANCE,y*10);
   
   if (trM30==1)
      {
         ObjectSetText("trM30","Тренд M30",9,"Tahoma",Lime);
         ObjectSetText("ArrowM30",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowM30",DoubleToStr(trM30,0),9,"Tahoma",Lime);
      }
   else if (trM30==-1)
      {
         ObjectSetText("trM30","Тренд M30",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowM30",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowM30",DoubleToStr(trM30,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM30","Тренд M30",9,"Tahoma",LightGray);
         ObjectSetText("ArrowM30",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowM30",DoubleToStr(trM30,0),9,"Tahoma",LightGray);
      }
//--------------------------------------------------------------------   
   ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   else if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
/*
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }
*/
//--------------------------------------------------------------------   
   

//--------------------------------------------------------------------   
   WindowRedraw();                      // Перерисовываем все объекты
   return;
  }
//--------------------------------------------------------------- 9 --
 

人们,请分享专家顾问的现成的、有效的(不是故障的)模板,这样才有可能改变交易策略,如果有必要,有可能将开仓关闭到相反的位置(反转,但这样买/卖的条件不是通过其他,而是有可能单独规定条件。

如果条件是买入
{
Opn_B=true; //打开买入标准。
Cls_S=true; //关闭卖出标准。卖出
}
如果有条件卖出
{
Opn_S=true; // 标准开放 卖出
Cls_B=true; // 标准关闭 买入 购买标准
}),或TP/SL来平仓

我失去了理智,我在这个问题上挣扎了一个月。 我无法将交易策略从欧米茄转移到MT,某种缓冲器/缓冲器,牵强的数组,以及在EA中的核算块,打开/关闭和错误核算。

提前感谢每个人的答复。

 
Craft:

人们,请分享现成的、可操作的EA模板,这样你就可以只改变交易策略,如果有必要,可以在反面(反转)或通过TP/SL关闭一个开仓的能力。

我正在用订单核算、打开/关闭区块和错误核算在我的脑子里打转。

我会给你答案,因为我已经为它 "流汗 "很长时间了--只有在测试策略和快速改变策略时,你才能把订单排除在游戏之外,并把订单和错误也搁置起来。只要复制他在教科书中的内容,就可以了。如果你是按照Sergei Kovalev的教程,只用Trade()和Criterion()工作。Criterion() - 为你的策略寻找进入点,Trade() -打开/关闭头寸。与他们一起工作并改变他们,就足以测试战略。然后,一旦你擅长编程,你就会进入你自己的功能,因为你会明白 这一切是为了什么,以及这一切是如何运作的......。
 
artmedia70:
我会回答,因为我自己也在这个问题上 "挣扎 "了很久--只有在测试策略和快速改变策略时,你才能把订单核算排除在外,并把错误核算也放在货架上。只要复制他在教科书中的内容,就可以了。如果你是按照Sergei Kovalev的教程,只用Trade()和Criterion()工作。Criterion() - 为你的策略寻找进入点,Trade() - 打开/关闭头寸。与他们一起工作并改变他们,就足以测试战略。然后,在掌握了编程之后,你将进入你自己的功能,因为你将了解 这一切是为了什么,以及这一切是如何运作的......

谢谢,我已经测试了一切,我想尝试通过MT交易,真正考虑到订单和开/平 仓,必要时进行余额修正。
 
Vinin:

你必须看一下代码。把逻辑拆开。

最空指标的代码...在那里也没有什么...

 
#property indicator_separate_window
#property indicator_minimum 1
#property indicator_maximum 10
 
bool initFinished=false;
// добавляем переменную, которая будет запоминать состояние инициализации.
// false - инициализации еще не было
// true - была
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{

   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   ObjectsDeleteAll();
   // удаляем все объекты
   
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   if(initFinished==false)
   {
      IndicatorShortName("Info");
 
      int winID=WindowFind("Info");
   
      if(winID<0)
      {
         // если номер подокна равен -1, то возникла ошибка
         Print("Чёт не могу твоего окошечка найти, пошел я отсюдова");
         return(0);
      }  
//------------------------ Тут можно рисовать ------------------------- 
 
// ----------------------- Но не нужно... ----------------

//------------------------------------------------------------------------- 
      WindowRedraw();      
            
      initFinished=true;
     
   }
   
   return(0);
}
原因: