初学者的问题 MQL5 MT5 MetaTrader 5 - 页 852

 

不开启交易,哪里有错?

iRSI_handle=iRSI(NULL,0,15,PRICE_OPEN);

double iRSI_buf[];

ArraySetAsSeries(iRSI_buf,true);

CopyBuffer(iRSI_handle,0,0,20,iRSI_buf);

if (iRSI_buf[0]>60)

trader.Buy(Lot);
 
Askr:

没有打开交易,错误在哪里?

错误1:在每一个刻度线上,你创建一个新的指标HANDL

2号浅滩:(可能)地段变量的体积不正确。

缺陷3:(可能)CTrade类的订单填写类型没有填写。


一般来说,终端的(或测试人员的)日志里有什么?

 
Kirill Belousov:

该数额乘以1 SL的货币损失

而如果损失是1,以BO为例。

我把这些值放进公式中,甚至没有接近相同的结果。

有什么问题吗?

double lot=1.0;
double koef_lot=2.0;
int seriya =15;
double depo=0.0;
depo=(lot*(koef_lot*seriya-1))/(koef_lot-1);
   Comment(" depo ",depo);
 
Vladimir Karputov:

差距1:在每一个刻度 上,你创建一个新的指标HANDL

2号浅滩:(可能)地段变量的体积不正确。

缺陷3:(可能)CTrade类的订单填充类型未被填充。


总之,终端的(或测试者的)日志里有什么?

这个代码是在onitics中

ArraySetAsSeries(iRSI_buf,true);

CopyBuffer(iRSI_handle,0,0,20,iRSI_buf);

将其移至onytics。我刚刚看了这里的文章,了解到对工作来说没有区别,但在onitiket更好。但在明确自己的情况下,我更方便在1块做所有的事情,我纯粹是为了自己,同时解决我自己设定的问题(学习。)

问题出在手数上--我不得不把不是一个变量手数--和函数returnlot(因为它是一个计算手数的函数)。

现在我发现了一个错误,在批处理功能中--批处理的计算有很多小数位,结果是订单无法打开。我们需要减少不必要的字符,只留下2个。

//параметры
input double      StartLot=0.1;
input double      StartEquityLot=10000;

//переменные
double KoefLotEQUITY;//разница эквити
double Lot;

//функция расчета текущего торгового лота
double LotF(double Lot)
{
KoefLotEQUITY=AccountInfoDouble(ACCOUNT_EQUITY)/ StartEquityLot;
Lot=StartLot*KoefLotEQUITY;
//функция минимального возможного лота
if (Lot<0.01)
{
Lot=0.01;
}

return(Lot);
} 

NormalizeDouble和DoubleToStr至今不能工作--写着该函数不能放在函数中,而当我把它们的工作放在函数中时,下面写着错误--我无法修复。


 
Askr:

这个代码是onitics的。

把它移到了ontic。我刚刚读了这里的文章--从这些文章中我了解到,对工作来说没有区别,但在安提凯特的情况下会更好。但在明确自己的情况下,我更方便在1块做所有的事情,我纯粹是为了自己,同时解决我自己设定的问题(学习。)

问题出在手数上--我不得不把不是一个变量手数--和函数returnlot(因为它是一个计算手数的函数)。

现在我发现了一个错误,在批处理功能中--批处理的计算有很多小数位,结果是订单无法打开。我们需要减少不必要的字符,只留下2个。

当我粘贴函数NormalizeDouble和DoubleToStr时,我还不能做,它说不能把函数放进去,在下面我看到有错误,我不能纠正。


在MQL5中,你只需要在OnInit中创建一个指标句柄,而且只需要一次。这是一个公理。你不能在OnTick中为每个tick创建一个指标句柄--这是不正确的。

在交易类CSymbolInfo::NormalizePrice 中,可以对手数进行正确的规范化。

 
Vladimir Karputov:

在MQL5中,你必须只创建一个指标句柄,而且只在OnInit中创建。这是一个公理。你不能在OnTick中为每个tick创建一个指标句柄--这是正确的。

在交易类CSymbolInfo::NormalizePrice 中,可以对手数进行正确的规范化。

错了,我不反驳这一点。但是!!!。如果我们在每次打勾时都创建它,会有什么变化?甚至价值也不会改变。

 
Alexey Viktorov:

错了,这一点无可争辩。但是!!!。如果你在每次打勾时都创建,会有什么变化呢?甚至价值也不会改变。

这有什么意义?只是为剧本增加了很多额外的工作,仅此而已。

 
Alexey Viktorov:

错了,这一点无可争辩。但是!!!。如果你在每次打勾时都创建,会有什么变化呢?甚至价值也不会改变。

在最近的一篇文章中,我已经表明MQL5有效地打击了MQL4风格的编码残余--在每个tick上创建句柄:内存没有被浪费,但操作速度至少有所下降。但我重申:在MQL5中以MQL4风格创建指标 的方法是不正确的。如果你切换到MQL5,这意味着必须重新建立编程风格。

 
Konstantin Nikitin:

这有什么意义?这只是剧本的额外工作,仅此而已。

当然,没有任何意义。这是这样一个隐藏的问题drubashke:为什么类似于神经质,这是够在这里,因为它是,并包括大写字母锁?

 

也就是说,结果是一样的,但当然执行起来毫无意义,而且更忙,我从所写的内容中了解到。

我希望他们能想到在文章中写到这一点,但总的来说,显然没有理由多次做同样的事情。

但我的目标是为了理解和工作本身而写作,而不是为了优化--那是在我算账之后。
原因: