granit77>>: Лот и магик никто не имеет права трогать, а к комментарию на хвост будет дописка брокера. Но свой комментарий всегда можно найти поиском подстроки.
Вы говорите, что у Вас сигнал тянется аж до самого разворота. Но и это можно обойти. Ордеров в рынке нет - проверяем наличие сигнала. Сигнал появился - открыли позу, сняли сигнальный флаг (обнулили переменную) и больше не проверяем наличие сигнала (например лонгового) до тех пор, пока ни возникнет противоположный сигнал (шортовый). Таким образом флаг наличия сигнала заданного типа будет вообще жить считанные секунды - флаг встал, ордер встал, флаг снят - ждём противоположного сигнала. Противоположный возник, флаг противоположного сигнала устанавливаем и устанавливаем флаг, дающий добро отслеживать сигналы, которые до этого отслеживать было запрещено.
Старт работы советника (не функция start(), а лишь начало работы):
- даём добро отслеживать и лонговые и шортовые сигналы.
Появился лонговый сигнал:
- даём добро отслеживать шортовые сигналы
- Ставим лонговый ордер и если этот ордер встал, то
- Снимаем флаг, дающий добро отслеживать лонговые сигналы.
Появился шортовый сигнал
- Если есть добро разворачивать ордера, то закрываем лонговый ордер и устанавливаем шортовый
- Устанавливаем флаг, дающий добро отслеживать лонговые сигналы и снимаем флаг, дающий добро отслеживать шортовые сигналы.
Вобщем, флаги - это выключатели. Можно так же сконструировать не выключатели, а переключатели. В этом случае советник начинает работать по принципам кибернетического автомата, который обладает памятью о том, в каком состоянии он находится. Этого можно достигнуть, например, объявив целочисленную переменную и присваивая ей номера состояний. Например в блоке инициализации пишем
Sostojanie=0;
А вот уже в старте советник знает, что в нулевом состоянии (if(Sostojanie==0){}) советнику разрешено делать только операции А, В и С. И в зависимости от того, каков будет результат одной или нескольких этих операций, советник выбирает в какое состояние нужно перейти (Sostojanie=1;// или 2, или 3 и так далее), или наоборот, остаться ли в текущем состоянии.
В каждом состоянии советник знает, что ему делать можно, а что нельзя, и при наступлении каких условий он должен перейти в иное состояние.
double tmp=0;
while(Ask<tmp || Ask>tmp){// цикл выполняется до тех пор, пока условие истинно//именно фактор наличия истины в условии запускает цикл в работу и держит его во включенном состоянии
RefreshRates();// проверяем поступление новой котировкиif(tmp!=Ask){//пришла новая котировка
tmp=Ask;// выполняем какие-то действия...Print("ЕТО ЗАРАБОТАЛО!");
break;//выходим из цикла после почти бесконечного числа итераций, которые тупо пригрузили мой проц
}
}
Лот и магик никто не имеет права трогать, а к комментарию на хвост будет дописка брокера. Но свой комментарий всегда можно найти поиском подстроки.
我在论坛上的某个地方看到,原则上,评论可以完全由经纪人取代。也就是说,结果是EA在一个经纪商那里工作正常,而在另一个经纪商那里则完全错误。所有 "不可改变 "的参数都是产生魔法的必要条件。这就是为什么我只想使用那些肯定会保持不变的东西。
Вы говорите, что у Вас сигнал тянется аж до самого разворота. Но и это можно обойти. Ордеров в рынке нет - проверяем наличие сигнала. Сигнал появился - открыли позу, сняли сигнальный флаг (обнулили переменную) и больше не проверяем наличие сигнала (например лонгового) до тех пор, пока ни возникнет противоположный сигнал (шортовый). Таким образом флаг наличия сигнала заданного типа будет вообще жить считанные секунды - флаг встал, ордер встал, флаг снят - ждём противоположного сигнала. Противоположный возник, флаг противоположного сигнала устанавливаем и устанавливаем флаг, дающий добро отслеживать сигналы, которые до этого отслеживать было запрещено.
Старт работы советника (не функция start(), а лишь начало работы):
- даём добро отслеживать и лонговые и шортовые сигналы.
Появился лонговый сигнал:
- даём добро отслеживать шортовые сигналы
- Ставим лонговый ордер и если этот ордер встал, то
- Снимаем флаг, дающий добро отслеживать лонговые сигналы.
Появился шортовый сигнал
- Если есть добро разворачивать ордера, то закрываем лонговый ордер и устанавливаем шортовый
- Устанавливаем флаг, дающий добро отслеживать лонговые сигналы и снимаем флаг, дающий добро отслеживать шортовые сигналы.
Вобщем, флаги - это выключатели. Можно так же сконструировать не выключатели, а переключатели. В этом случае советник начинает работать по принципам кибернетического автомата, который обладает памятью о том, в каком состоянии он находится. Этого можно достигнуть, например, объявив целочисленную переменную и присваивая ей номера состояний. Например в блоке инициализации пишем
Sostojanie=0;
А вот уже в старте советник знает, что в нулевом состоянии (if(Sostojanie==0){}) советнику разрешено делать только операции А, В и С. И в зависимости от того, каков будет результат одной или нескольких этих операций, советник выбирает в какое состояние нужно перейти (Sostojanie=1;// или 2, или 3 и так далее), или наоборот, остаться ли в текущем состоянии.
В каждом состоянии советник знает, что ему делать можно, а что нельзя, и при наступлении каких условий он должен перейти в иное состояние.
祝您好运!
如果在测试器中,它不会工作,但如果在战斗中,把Sleep() 放在循环内。
你必须看一下代码,否则你只是在猜测,我不是灵媒。
对于一个测试者,你可以这样做
мне нужен именно цикл
你不必使用break,我只是指出来,让你不要忘记强行中断循环迭代线程的可能性。