[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 304

 
pigvin:

问题是,EA不断地重新打开订单,即有一个买入信号--它打开了一个订单,然后在盈利时关闭了它,而条件仍然保留,它又打开了它。

我以为可以用传统的买入和卖出计数器来解决这个问题--如果买入订单打开后,计数器+1,在计数器高于0之前不能打开新的买入,只有在卖出后计数器才会重置。

也就是说,有一栏是有信号的,但已经被使用了?

你可以这样做

datetime save_time; 
int tf=0;
старт
...
if(total<1)//проверка количества ордеров 
   {
         if(save_time!=iTime(0,tf, iBarShift(0,tf,Time[0])))
            save_time =iTime(0,tf, iBarShift(0,tf,Time[0]));
         else return;


  ...
 if(ticket>0)
                      {
                         if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("открыта позиция BUY : ",OrderOpenPrice());
      
                         else Print("Ошибка при открытии BUY позиции : ",GetLastError()); 
                        }else{ save_time =0;}// так как ошибка запретим ретурн (см. выше)
 
Operr:

像这样试试吧。

if (OrderOpenTime()+2*1440*60  > Time[0])   //т.е. последнее время текушего графика а не локальное

它应该是双向的。

这对我来说更有意义。

if (Time[0]-OrderOpenTime() >= 2*1440*60 )   
 

大家好!

对不起,离题了,这个话题有需求,所以我才在这里写,你能给我一个提示吗?卡住了。

如何只用基本的操作(+-*/%),对一个实数进行指数化(包括实数)?例如,风力计算器,当应用于1.2的功率时,给出的结果是1.2445647472073939777218169154111826。对算法感兴趣,语言并不重要,任何。我将亲自翻译。

ZS.有多少编程测试我没有做过,我第一次看到这样的问题,尽管它对某人来说可能是微不足道的?

 

大家下午好!

我搜索了很多论坛和谷歌 文章,但没有找到答案。

我决定编写一个EA,在М1上进行两个相反的订单交易。

这个想法很简单:把两个相反的订单与小的TP,然后,当其中一个为第二个激活的定时器的TP是条数(例如5),它将是临时SL。计算结果是,如果货币将向同一方向移动,当第二单触发临时SL时,损失将是最小的,但如果图表转向,我们在两个位置上是黑色的。

不知道如何写一个"当其中一个TP触发时,第二个TP的定时器会以一定的条数打开 " 的代码片段

我目前只有一个同时下两个订单的计时器,但我不能从中得到什么。

PS一个多月都解决不了这个问题,请大家帮忙指点迷津或编码:)

这里是顾问的代码

extern int SL=100;

extern int TP=100;

extern double StartLot=0.1;

extern double StopLot=1.0;

extern int bar_time=20;


double Lot()

{

double lt;

if(OrdersHistoryTotal()==0) return (StartLot);

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderProfit()<0)

{

lt=OrderLots()*2;

if(lt>StopLot) return (StartLot);

else return (lt);

}

else

return (StartLot);

}

else

return (StartLot);

}

int start()

{

double lot;

if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

{

int order;

{

lot=Lot();

order=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);

order=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green);

}

}

//вот здесь должно быть что-то что является решением проблемы и связующим звеном

{

int bars = iBarShift( Symbol(), PERIOD_M1, OrderOpenTime() ) ;

if ( iTime( Symbol(), PERIOD_M1, bars ) > OrderOpenTime() ) { bars ++; }

if ( bars >= bar_time )

OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5,White);

}

return(0);

}


预先感谢

 
不是在一个柱子上!原则上,在没有出现反转或市场动荡的信号之前,我们不应该在这种趋势中开盘!在这种情况下,我们应该有更多的机会。
costy_:

也就是说,有一栏是有信号的,但已经被使用了?

你可以这样做

 
snail09:

大家好!

对不起,离题了,这个话题有需求,所以我才在这里写,你能给我一个提示吗?卡住了。

如何只用基本的操作(+-*/%),对一个实数进行指数化(包括实数)?例如,风力计算器,当应用于1.2的功率时,给出的结果是1.2445647472073939777218169154111826。对算法感兴趣,语言并不重要,任何。我将亲自翻译。

ZS.有多少编程测试我没有做过,这是我第一次看到这样的问题,虽然对有些人来说可能是微不足道的?

https://docs.mql4.com/ru/math/MathPow 不?或者说初级运算是问题的一个条件。那么选项http://bpascal.ru/download/desc/436.php,如果你用手做所有事情,那么用自己的函数实现指数和对数。

 
индикаторcosty_:

你用while(i>=0),所以当一个新的蜡烛出现时i=1(以确保前一个蜡烛的数据在固定数据上计算一次)

为什么输入some_time=D'1971.01.11 00:00';使用Bars, IndicatorCounted对我不起作用(好吧,错误可能是由于first_t_bar)

你的算法,你应该修复它。

"我是编程新手。"我是2007年以来的编程新手)。


同样,我不明白为什么我的设计工作得很好,而标准的设计却不行。some_time=D'1971.01.11 00:00'; 这里是在启动时使用一次但这与此无关,因为它在一种情况下有效,在另一种情况下无效。我以后会重新制作这个指标。这是另一个指标的修改版。谢谢你的答复

 
Sonne:

大家下午好!

我搜索了很多论坛和谷歌 文章,但没有找到答案。

我决定编写一个EA,在М1上进行两个相反的订单交易。

这个想法很简单:把两个相反的订单与小的TP,然后,当其中一个为第二个激活的定时器的TP是条数(例如5),它将是临时SL。计算结果是,如果货币将向同一方向移动,当第二单触发临时SL时,损失将是最小的,但如果图表转向,我们在两个位置上是黑色的。

不知道如何写一个"当其中一个TP触发时,第二个TP的定时器会以一定的条数打开 " 的代码片段

我目前只有一个同时下两个订单的计时器,但我不能从中得到什么。

PS 我已经有一个月没有解决这个问题了,请帮我提供建议或代码:)

这里是代码

................................................

预先谢谢你

1.如果有一个封闭的位置,在塔基...

1.1 如果其类型为OP_BUY,...

1.1.2 如果有一个开放的位置OP_SELL,...

1.1.3 如果当前柱子的时间减去打开卖出位置的柱子的时间,大于或等于延迟的柱子 数,....。

1.1.4 我们关闭卖出头寸

1.2 如果其类型为OP_SELL,...

1.2.2 如果有一个开放的位置OP_BUY,...。

1.2.3 如果当前条形的时间减去买入头寸的时间,大于或等于要保持的条形数量,....。

1.2.4 关闭买入位置

 
你好,请问哪里可以得到正常的故事(无孔),MT5的分钟故事是否适用于MT4?
 

大家晚上好,我为之前的愚蠢问题道歉)

我想知道是否有可能在EA中存在一个变量,例如 "A",在此刻被赋予一个价格值并进行交易。如果我们想把这个值改为任何历史值,例如,取任何月度值,从历史分析中得出所需的值。我试图在策略测试器中 做到这一点,但我对其正确性有很多疑问。还是我必须重做,用数组工作!?谢谢大家。

p.s. 我想知道,因为我在MQL手册和教程中没有找到它。