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を使う必要はありません。ループの反復処理スレッドを強制的に中断させる可能性を忘れないように指摘しただけです。