新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 934

 
Aleksei Beliakov:

为什么最后一行没有斜线,是否有可能从宏中返回一个值

这是宏置换语法,字符串胶合。

下面是一个如何返回一个值的例子https://www.mql5.com/ru/forum/318246/page10#comment_12652228

 
拜托,谁能帮帮我?
 
jaffer wilson:
拜托,谁能帮帮我?
而不是歌词--问问题。无论是谁,都会考虑和帮助论坛的实质。
 
如果(MA5>MA20)
{
信号=1。
}

if(Signal>TradeLevel) // TradeLevel被设置为0。
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point, "Optim",16384,0,Blue);
}



你能告诉我为什么这个逻辑行不通吗?(mql4)
Deals do not open

(其他一切,变量,一切都有描述 - MT中的标准Owl模板,没有编译错误)
 
Ivan Butko:

   if (MA5>MA20)
     {
      Signal=1;
     }
   if(Signal>TradeLevel) // TradeLevel установлен в 0.
     {
      ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
     } 


请告诉我们为什么这个逻辑不工作?(mql4)
交易不开放

(其他一切,变量,一切都有描述 - MT中的标准Owl模板,没有编译错误)

那么,是逻辑不工作还是EA仓位没有打开?

先看 "专家 "杂志是个好习惯--有很多内容可以写。我还想检查一下 "日志"。

发送交易请求 时,我正好看到两个错误和一个不确定性。

 
Artyom Trishkin:

那么,是逻辑不工作还是EA仓位没有打开?

先看 "专家 "杂志是个好习惯--有很多内容可以写。看一下 "杂志 "也无妨。

就在我的头顶上,我看到在发送交易请求 时正好有两个错误和一个不确定性。

谢谢你,它起作用了!

刚刚在标准MACD EA中重新部署了这个逻辑。
只是需要一个基础来部署不同的信号并对其进行总结。

很抱歉给你带来麻烦。(顺便说一下,日志是空的,也没有错误,只是没有打开交易,就这样)。

如果你不介意,请仍然指出错误

 

有一个原始的代码

templ(T)class CData{
public:CData(){};~CData(){};
       T Total(T &mas[]  ,int y){return(ArraySize(mas));}    
       T Total(T &mas[][],int y){return(ArraySize(mas));}}

问题是如何调用Total() 函数,例如我想在OnInit()中调用它,伙计们请不要无礼,我是个傻瓜,我不明白的帮助?我是否需要删除班级的记忆,如果需要,在哪里,如何删除?

 

在计算每笔交易的风险时出现故障。

任务: 计算任何工具(包括外汇、多头、差价合约)每笔交易250美元的可接受风险水平下的手数大小。

我的领悟(对于BUY,功能代码的摘录)。

//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(currencySelect,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*MarketInfo(symb,MODE_TICKVALUE)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

问题: 这段代码正确计算了所有资产的损失,包括货币对(包括交叉盘)、黄金、石油,但指数,例如nq100,并没有正确计算。也就是说,我的脚本数据(潜在的交易损失)始终比MT4策略测试器 读取的数据少10倍!这就是我的脚本。

一些注意事项。

1.测试是在Alpari终端进行的。

2.根据终端,XAUUSD、BRN(石油)和NQ100的利润计算方式是 "CFD",对于货币对,分别是 "forex"。

我认为问题出在合约大小上,我没有考虑到这一点(对于石油--1000,对于XAUUSD--100,对于NQ100--10)。但是,为什么XAUUSD、BRN计算正确(还有货币对),而NQ100却没有?也许,尽管在Alpari终端符号的属性中,利润计算方法是 "CFD",但实际上它被算作 "Forex"?这有可能吗?

总的来说,如果有人能给我解释一下我的脚本错误以及如何修复它,我将非常感激。

谢谢你!

 
Сергей Михеев:

在计算每笔交易的风险时出现了故障。

模式 _ticksize

 
Yurij Kozhevnikov 2019.08.10 17:57 EN
Сергей Михеев:

在计算每笔交易的风险时出现故障。

模式 _ticksize

阅读 xxxxxxxx

遗憾的是,这并不能解决这个问题。我有

MODE_TICKVALUE равно MODE_POINT и равно MODE_TICKSIZE (для NQ100 это 0.1)

也试过这个变体的代码。

double StoimPunkt(string B){
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));return(S);
}
//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(symb,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*StoimPunkt(symb)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

的结果与我上面的例子完全一样。

有其他想法吗?

原因: