//+------------------------------------------------------------------+//| Расчет лота |//+------------------------------------------------------------------+double Lots()
{
double L=0;
// если последняя закрытая сделка убыточная и лот равен стартовому// включаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)==Lot)
{
Martin=true;
}
// если последняя закрытая сделка убыточная и лот больше или равен максимальному// выключаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)>=MaxMartinLot)
{
Martin=false;
}
// если последняя закрытая сделка убыточная и Мартин включен, умножаем лотif(Martin==true)
{
L=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);
}
// если последняя закрытая сделка убыточная и Мартин выключен, делим лотif(Martin==false)
{
L=NormalizeDouble(GetInfoLastPos(1)/K_Martin,DigitsLot);
}
if(L>MAXLOT) L = MAXLOT;
if(L<MINLOT) L = MINLOT;
return(L);
}
//+----------------------------------------------------------------------------+//| Функция возвращает по символу и магику |//| 1 - размер лота последней закрытой позиции |//| 2 - размер профита с учетом комиссии и свопа последней закрытой позиции |//| 3 - время последней закрытой позиции |//+----------------------------------------------------------------------------+double GetInfoLastPos(int a=1)
{
datetime t=0;
double result=0,l=0,p=0,f=0;
int i=OrdersHistoryTotal();
for(int pos=0; pos<i; pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
}
}
}
}
if(a==1) {result=l;} elseif(a==2) {result=p;} elseif(a==3) {result=(double)t;}
else {result=0;}
return(result);
}
模块差异。如果没有这个模块,只有顶部区域属于这个条件。
情况应该是这样的,出价低于OpenPrice,没有模块。
否则,如果出价高于开价,我们会得到正确的结果。
模块差异。如果没有该模块,只有顶部区域属于该条件。 |开盘价-出价|>10*_点开盘条件
我不太明白......
你能不能说得更清楚一些......对于初学者来说)
你让我吃惊。
如何?
从图片中你可以看到,OpenPrice - Bid不应该超过10*_Point。
但可以更少,包括负
但可以更少,包括负
是的......而你得到的条件是"&&>0"
问题是什么呢?就像这样,还是为了什么?
是的......而你得到的条件是"&&>0"
问题是什么呢?就像这样,还是为了什么?
我目前正在使用这个定义来进入市场 的时刻
我想可能有一种方法可以简化它)
帮助优化马丁的一段代码
任务是这样的。
-在停止之后,一个马丁将乘以该地段。
-乘数可以用函数OrdersClose来调整,当它达到一个指定的值时,lot将被重置为起始值。
- 批量不应重置为起始量,而是必须按相反的顺序依次减少。
例如OrdersClose=5, Martin=2, lot=0.01。
我们有这样的序列:0.01; 0.02; 0.04; 0.08; 0.16 (重置) 0.01; 0.01;,,,,
需要:0.01;0.02;0.04;0.08;0.16(重置) 0.16;0.08;0.04;....0,01.
我没有足够的知识来自己解决这个问题。
我已经尝试了不同的组合,但没有达到预期的效果。
我目前正在使用这个市场进入 点的定义
我想可能有一种方法可以简化它)
而且阿列克谢说得很对))
按条件应该是这样的,出价低于OpenPrice,没有模块。
否则,如果出价高于开价,我们会得到正确的结果。
固定的)
是的,正确。没有改变病情。出于习惯。在图片中,Bid是在中间)))),这让人困惑。
但有第二个条件,进入是相同的条件数。
帮助优化马丁的一段代码
任务是这样的。
-在停止之后,一个马丁将乘以该地段。
-乘数可以用函数OrdersClose来调整,当它达到一个指定的值时,lot将被重置为起始值。
- 批量不应重置为起始量,而是必须按相反的顺序依次减少。
例如OrdersClose=5, Martin=2, lot=0.01。
我们有这样的序列:0.01; 0.02; 0.04; 0.08; 0.16 (复位) 0.01; 0.01;,,,,
需要:0.01;0.02;0.04;0.08;0.16(复位) 0.16;0.08;0.04;....0,01.
我没有足够的知识来自己解决这个问题。
我已经尝试输入不同的组合,但没有达到预期的效果。
而且阿列克谢说得很对))。
是的,这是正确的。没有改变病情。出于习惯。图片中的Bid在中间,这很让人困惑))
谢谢,但它丝毫没有简化我的代码)