需要编码帮助 - 页 4

 

你说....... "你的滑点没有调整为4/5位数的经纪人"

我说......,我的理解是,它是以点数或点数或其他方式计算的--已经是这样了。

也就是说,3是可以使用的,3*mypoint是不正确的。

有人能证实这一点吗?


RaptorUK:

好的,有一点帮助.. .

在你的代码中找到这一部分,然后把它改成这样 ... .

这并不检查神奇数字 ......如果你想在相同的货币对上放置手动订单,或者你想同时在同一货币对的不同时间段上运行,你需要把它加进去 ......你会吗?

Bars 是不可靠的,使用Bars 是个坏主意,你应该使用Time。

你的滑点没有针对4/5位数的经纪商进行调整 ......你的止损或止盈也没有。

如果你把你的SL做得很小,你会得到错误的130,因为你没有检查它是否太近或允许点差的存在。

你的经纪商是ECN经纪商吗?当你向ECN经纪商下市场订单时,你不能设置SL和TP,你必须在下单后用OredrModify()代码添加SL和TP。

这是最基本的 东西 ......这些观点在这个论坛上日复一日地出现 ......

而你并不了解这些,因为你并没有真正编码过任何东西 ...... 你使用的是别人的代码 ......."专家顾问生成器"。 只有一条捷径。 乔布斯

 
mrmedia:

你说....... "你的滑点没有调整为4/5位数的经纪人"

我说......,我的理解是,它是以点数或点数或其他方式计算的--已经是这样了。

也就是说,3是可以使用的,3*mypoint是不正确的。

有人能证实这一点吗?




阅读此文https://www.mql5.com/en/forum/138912
 
mrmedia:

你说....... "你的滑点没有调整为4/5位数的经纪人"

我说......,我的理解是,它是以点数或点数或其他方式计算的--已经是了。

滑点=3意味着5位数经纪商的滑点为0.3点,4位数经纪商的滑点为3点。
 
RaptorUK:
滑点=3意味着5位数的经纪商有0.3个点,4位数的经纪商有3个点。

再一次清楚地表明了这一点。

误差0.98330

滑点 = 3 = 补仓在哪里?

slippage = 3*SymPoints(5位数的经纪人) = 填补在哪里?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

if( SymPoints == 0.001 ) { SymPoints = 0.01; SymDigits = 3; }

else if( SymPoints == 0.00001 ) { SymPoints = 0.0001; SymDigits = 5;

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 
mrmedia:

再一次清楚地表明了这一点。

误差0.98330

滑点 = 3 = 补仓在哪里?

slippage = 3*SymPoints(5位数的经纪人) = 填补在哪里?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

if( SymPoints == 0.001 ) { SymPoints = 0.01; SymDigits = 3; }

else if( SymPoints == 0.00001 ) { SymPoints = 0.0001; SymDigits = 5;

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

看看OrderSend的文档,Slippage是什么类型?slippage=3*SymPoints 怎么会有意义?
 
价格上允许的滑点总是 你指定的滑点(int)乘以内部变量PointPoint 的值在4位和5位经纪人之间变化。
 
我不知道
 
weinux:
我不知道
谢谢,那是一个很大的帮助。
 
你不能用symPoints来计算滑移量 int(3 * symPoints) == 0 没有滑移量。
//++++ These are adjusted for 5 digit brokers.
int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.015      0.0150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)
int     init(){                                             OptInitialization();
     if (Digits % 2 == 1){      // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262
                pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
    } else {    pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//---- These are adjusted for 5 digit brokers.
    /* On ECN brokers you must open first and THEN set stops
    int ticket = OrderSend(..., 0,0,...)
    if (ticket < 0)
       Alert("OrderSend failed: ", GetLastError());
    else if (!OrderSelect(ticket, SELECT_BY_TICKET))
       Alert("OrderSelect failed: ", GetLastError());
    else if (!OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0)
       Alert("OrderModify failed: ", GetLastError());
     */