任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 206

 
mikhail12:

但如果你重新开仓,头寸就会按差价的数额削减。

嗯,这将是一个特别整洁的变态。我不这么认为。
 
tara:

嗯,这将是一个特别优雅的变态。我不这么认为。

是的,我已经检查过了,我想......如果不是这样,你可以把卖出的自来水放在伊斯兰账户中,买入的放在差价账户中。会有稳定的利润......比银行里的还多
 

1.
2.部分关闭订单的情况--票据被改变,并在评论中写到新的订单,很明显,它可以被达成。有些经纪商在通过夜间/周末调仓时的情况,他们关闭头寸,并在白天开始时再次开仓,在这种情况下,该票如何表现?旧票写在新位置的评论中,什么也没有发生? 如果有4-8个以上的订单,有什么方法可以记录下来?

 
Vladislav:你应该删除这个帖子,我认为。
 
artmedia70:


数据时间与int相同



这让我想到--我确信datetime 是一个无符号的int,我检查了一下,你是对的。事实证明,MT4的寿命不会超过2038年;)。仍有时间))))))))))))))))))))))))。
 
tara:
Vladislav:你不应该删除这个帖子,我认为。


当然,IMHO并不是一无是处:Datetime 确实是int虽然,所写的一切在一般情况下都是正确的,但在这个案例中却不是。在这里我无法理解ICL开发者的逻辑,(((((((((((((。也许他们会在新版本的语言中纠正它。

SZ被删除的帖子的意思是,类型应该按照预期使用,否则你会遇到运行时错误。在这种情况下,对于日期来说,最好是datetime,而不是int,因为有一个希望,即类型的不匹配将被纠正。

 
VladislavVG:


当然,IMHO认为,没有什么好说的:Datetime 实际上是int。 虽然,所写的一切在一般情况下都是正确的,但在这个案例中却不是。我无法理解这里的ICL开发者的逻辑,(((((((((((((。也许他们会在新版本的语言中纠正它。

HH被删除的帖子的意思是,应该按照预期使用这些类型,否则你会遇到运行时错误。在这种情况下,对于日期来说,最好是datetime,但不是int,因为有希望纠正类型的不匹配。


我同意,我们不应该用int代替datetime,也不应该用color。甚至不是因为执行错误,而是从开发人员把事情安排好后会发生什么。
 
VladislavVG:


当然,IMHO认为,没有什么好说的:Datetime 实际上是int。 虽然,所写的一切在一般情况下都是正确的,但在这个案例中却不是。我无法理解这里的ICL开发者的逻辑,(((((((((((((。也许他们会在新版本的语言中纠正它。

SZ被删除的帖子的意思是,类型应该按照预期使用,否则你会遇到运行时错误。在这种情况下,对于日期来说,最好是datetime,但不是int,因为有希望纠正类型的不匹配。

是的,他们承诺像MQL5中的8个字节。我猜它将是__time64_t (UNIXTIME64)类型。
 
solnce600:

各位专业人士....,我很困惑

TarasBY artmedia70 说,我的错误与存储订单的神奇数字的变量值有关


维宁 这不是魔术师的问题,而是错误的逻辑......... artmedia70 与他争 论。

.

如果专业人士对我的问题没有达成共识,作为初学者,我应该怎么做才能解决我的问题呢?


魔术师的错误导致你的EA在停止时看不到它的头寸是在停止时关闭的。为什么?答案是,你用magic 123开仓,并将变量Magic发送给检查在止损点平仓的函数。你认为它在隐式初始化时等于什么?零。该函数自然是在搜索带有神奇数字0的位置,并且在你的位置上等于123。而且我们不是在争论,只是......推理...检查反应,以便在停止时关闭。


double   Lot;
int      Magic=123;

int start() {

   double Price=iOpen(Symbol (),0,0);
          
   int last_order_bar=0; 
   int ot=OrdersTotal();
   if (ot>0) {
      if (OrderSelect(ot-1,SELECT_BY_POS))
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_order_bar=iBarShift(Symbol(),0,OrderOpenTime()); 
      }                                    

   int last_hist_order_bar=0;   
   int oht=OrdersHistoryTotal(); 

   if (oht>0) { 
      if (OrderSelect(oht-1,SELECT_BY_POS, MODE_HISTORY))    
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_hist_order_bar=iBarShift(Symbol(),0,OrderOpenTime());
      }

   if (ot==0)
      if (Bid==Price)
  //=============================================================== 
         if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
            if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
               if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
  //============================================================
                  Lot=MarketInfo(Symbol(), MODE_MINLOT);   
                  if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot)) {
                     Lot=Lot*2;
                     OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
                     }
                  else {
                     Lot=0.1;        
                     OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
                     }
   return(0);
}
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop(string sy, int op, int mn, double &ll) {
   double   pt;
   int      dg, i, j=-1, k=OrdersHistoryTotal()-1;
   datetime t=0;                                   // во избежание возможных ошибок после возможных будущих улучшений
   for (i=k; i>=0; i--) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderMagicNumber()!=mn)   continue;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)        continue;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)          continue;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);      // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
      if (MathAbs(OrderClosePrice()-OrderStopLoss())<0.5*pt) { // Если закрыт по стопу
         ll=OrderLots();                              // записываем количество лотов в ордере, закрытом по стопу
         return(true);                                // возвращаем истину
         }
      }
   return(False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}
//+----------------------------------------------------------------------------+

我没有看你的 "死 "的EA逻辑的其余部分--我是在帮你弄清楚在停止时检查关闭的功能...

 
tara:

不客气。好运!

阿列克谢!下午好。

我们的沟通没有走出我的脑海......,这就是原因.....。

关于我的编码,我多次听到关于缺乏逻辑的评论。

昨天你向我解释了布尔代数,这是个广泛而深刻的主题。

事实是,我不是一个数学家,当然也不是一个代数头脑。

一些不是很困难的数学东西我都能理解....,但不是一下子就能理解的,而复杂的东西我的大脑根本就没有感知到。

六个多月前,在我开始学习MCL编程教材之前,我就在想

如果没有数学能力,我是否能理解它。

但科兹洛夫先生在其教科书的序言中说,这实际上比乍看之下要简单得多。

乍看之下。

而事实上,他的教程中有60-70%的内容我认为我现在已经能够理解了(可能不是第一次),结果是我已经可以编写一些代码。

直到昨天,在我看来,所有复杂的数学计算(我无法理解)都是由程序完成的,而我只需要知道其中的规则。

该程序工作并进行计算。

但我们昨天的谈话使我想到,如果我不学习布尔代数,我的代码将缺乏逻辑。

如果我的代码将缺乏布尔逻辑,我的程序将不能正确工作,或者根本不能工作。

但我昨天瞥了一眼维基百科,意识到--布尔代数和可能的逻辑学--不适合我的思想!我想,这就是我的想法。

昨天你粗略地看了一下我的代码片段,就很快推断出它缺乏布尔逻辑。

如果你不介意的话,请你解释一下你的推理过程,在你得出这个片段没有逻辑的结论之前,你是如何推理的。

如果我理解了,我就会继续前进。 如果我不了解.....,我可能会得出结论,编程是大大超过我的能力的事情。

谢谢你。

如果(ot==0)
如果(Bid==Price)
if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))