artmedia70>>: А кто сказал, что именно тот кусочек работает неправильно? Если б я выложил весь код - места бы не хватило... Сначала вызываете на общение, потом в кусты... :)
Вообще, чтоб найти ошибку, нужно заблокировать некоторые участки кода. Например, код состоит из следующих блоков:
- Блок проверки наличия торгового сигнала
- Блок открытия/закрытия/переворота ордеров
- Блок сопровождения открытых позиций.
Блокируем при помощи многострочного комментария /**/ два последних блока, запускаем советника и с помощью принта или алерта снимаем значения ключевых переменных - просто убеждаемся, что этот блок работает корректно. Если натыкаемся на ошибку, то исправляем её. Затем снимаем блокировку со следующего блока кода и повторяем процедуру. И так далее до тех пор, пока весь код ни окажется отлажен. Другой путь будет более утомителен.
Andrei01>>: Скажите, должны ли рисоваться графические объекты советником в тестере не в ценовом окне, а в отдельном? Почему-то это не работает при замене нуля на единицу при создании объекта.
sllawa3>>: подскажите пожалуйста как вписать индюк в эксперт чтоб снимал данные с тф н4 ???
for(int i=limit;i>=0;i--)
{
int ii=iBarShift(Symbol(), 240, i);//Symbol() или NULL
upPrice=iHigh( NULL, 240, iHighest(NULL, 240 ,MODE_HIGH,N, ii) );//максимум за N баров
downPrice=iLow( NULL, 240, iLowest(NULL, 240 ,MODE_LOW, N, ii) ); //минимум за N баров
ExtMapBuffer1[i]=(upPrice-downPrice)/Point;
}
什么是错误4051以及如何捕捉它?
https://docs.mql4.com/ru/constants/errors
ERR_INVALID_FUNCTION_PARAMVALUE 4051 函数参数的无效值
А кто сказал, что именно тот кусочек работает неправильно? Если б я выложил весь код - места бы не хватило...
Сначала вызываете на общение, потом в кусты... :)
不,我建议你拆开一段不起作用的代码。把它的每一个细节都拆开。而不是这样,你把整个代码铺开。:)
我不会躲在任何灌木丛中。>> 我引用一下。
>>让我们逐行拆开你的一段不能正常工作的代码......
>>我们该怎么做?
以下是我的话。你没有把一块不起作用的东西放在一起,而是放了一堆无法理解的东西--一些函数的集合。这就是我不喜欢的地方。
一般来说,为了找到一个错误,你需要屏蔽掉代码的某些部分。例如,代码由以下几个块组成。
- 交易信号的块状检查
- 阻止开仓/平仓/逆转的订单
- 阻止保持开放的位置。
我们使用多行注释/**/封锁最后两个区块,运行EA并使用打印或警报来检查关键变量的值--只是为了确保这个区块正常工作。如果我们遇到一个错误,请修复它。然后解锁下一个代码块,重复这个过程。以此类推,直到整个代码调试完毕。另一种方式会更加乏味。
Вообще, чтоб найти ошибку, нужно заблокировать некоторые участки кода. Например, код состоит из следующих блоков:
- Блок проверки наличия торгового сигнала
- Блок открытия/закрытия/переворота ордеров
- Блок сопровождения открытых позиций.
Блокируем при помощи многострочного комментария /**/ два последних блока, запускаем советника и с помощью принта или алерта снимаем значения ключевых переменных - просто убеждаемся, что этот блок работает корректно. Если натыкаемся на ошибку, то исправляем её. Затем снимаем блокировку со следующего блока кода и повторяем процедуру. И так далее до тех пор, пока весь код ни окажется отлажен. Другой путь будет более утомителен.
Скажите, должны ли рисоваться графические объекты советником в тестере не в ценовом окне, а в отдельном? Почему-то это не работает при замене нуля на единицу при создании объекта.
创建一个单独窗口的空的iCustom指标,并从EA中调用它。
如果你没有一个窗口,那么你就给一个绘图的命令,没有必要这样做。
唯一需要注意的是规模。
最简单的方法是将两个缓冲区设置为背景色。
在一个窗口中,你指定最大,在另一个窗口中指定最小,这很方便,你可以从指标的外部参数中调整它。
подскажите пожалуйста как вписать индюк в эксперт чтоб снимал данные с тф н4 ???
int counted_bars=IndicatorCounted(); тоже в эксперте не потянет