[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 555

 
granit77 >>:
Лот и магик никто не имеет права трогать, а к комментарию на хвост будет дописка брокера. Но свой комментарий всегда можно найти поиском подстроки.

Ich habe irgendwo im Forum gelesen, dass ein Kommentar im Prinzip vollständig durch einen Makler ersetzt werden kann. D.h. als Ergebnis wird der EA mit einem Broker richtig und mit einem anderen völlig falsch funktionieren. Alle "unveränderlichen" Parameter sind für die Erzeugung einer Magie erforderlich. Deshalb möchte ich nur solche verwenden, die mit Sicherheit unangetastet bleiben werden.

 
drknn >>:

Вы говорите, что у Вас сигнал тянется аж до самого разворота. Но и это можно обойти. Ордеров в рынке нет - проверяем наличие сигнала. Сигнал появился - открыли позу, сняли сигнальный флаг (обнулили переменную) и больше не проверяем наличие сигнала (например лонгового) до тех пор, пока ни возникнет противоположный сигнал (шортовый). Таким образом флаг наличия сигнала заданного типа будет вообще жить считанные секунды - флаг встал, ордер встал, флаг снят - ждём противоположного сигнала. Противоположный возник, флаг противоположного сигнала устанавливаем и устанавливаем флаг, дающий добро отслеживать сигналы, которые до этого отслеживать было запрещено.

Старт работы советника (не функция start(), а лишь начало работы):

- даём добро отслеживать и лонговые и шортовые сигналы.

Появился лонговый сигнал:

- даём добро отслеживать шортовые сигналы

- Ставим лонговый ордер и если этот ордер встал, то

- Снимаем флаг, дающий добро отслеживать лонговые сигналы.

Появился шортовый сигнал

- Если есть добро разворачивать ордера, то закрываем лонговый ордер и устанавливаем шортовый

- Устанавливаем флаг, дающий добро отслеживать лонговые сигналы и снимаем флаг, дающий добро отслеживать шортовые сигналы.

Вобщем, флаги - это выключатели. Можно так же сконструировать не выключатели, а переключатели. В этом случае советник начинает работать по принципам кибернетического автомата, который обладает памятью о том, в каком состоянии он находится. Этого можно достигнуть, например, объявив целочисленную переменную и присваивая ей номера состояний. Например в блоке инициализации пишем

Sostojanie=0;

А вот уже в старте советник знает, что в нулевом состоянии (if(Sostojanie==0){}) советнику разрешено делать только операции А, В и С. И в зависимости от того, каков будет результат одной или нескольких этих операций, советник выбирает в какое состояние нужно перейти (Sostojanie=1;// или 2, или 3 и так далее), или наоборот, остаться ли в текущем состоянии.

В каждом состоянии советник знает, что ему делать можно, а что нельзя, и при наступлении каких условий он должен перейти в иное состояние.

Vielen Dank für diese lohnende Idee. Das werde ich auf jeden Fall tun...
Viel Glück für Sie!
 
Warum funktioniert diese Konstruktion nicht? double tmp=Ask; while(Ask<=tmp) tmp=Ask; verlässt die Schleife nicht, d.h. Ask ist immer gleich tmp. RefreshRates() funktioniert ebenfalls nicht.
 

In einem Testprogramm wird es nicht funktionieren, aber wenn Sie im Kampfeinsatz sind, setzen Sie Sleep() in die Schleife.

 
Wird es in der realen Welt funktionieren? Wenn ja, ist das schon die halbe Miete. Wie schaffen Sie es, dass es im Testgerät funktioniert?
 

Man muss sich den Code ansehen, sonst kann man nur raten, ich bin kein Hellseher.

 
double tmp=Ask; while(Ask<=tmp) tmp=Ask; Print("THIS IS WORKED!"); dies ist der gesamte Code
 

für einen Prüfer können Sie Folgendes tun

double tmp=Ask; 
if(Ask<=tmp) 
  {
  tmp=Ask; 
  Print("ЕТО ЗАРАБОТАЛО!"); 
  }
 
Ich brauche eine Schleife, keine Bedingung... Ich brauche while(bis das passiert, dann lass es nicht passieren, und es wird passieren, weil Ask<=tmp nicht immer passieren kann)
 
maryan.dirtyn >>:
мне нужен именно цикл
double tmp=0; 
while(Ask<tmp || Ask>tmp){// цикл выполняется до тех пор, пока условие истинно
                          //именно фактор наличия истины в условии запускает цикл в работу и держит его во включенном состоянии
  RefreshRates();// проверяем поступление новой котировки
  if(tmp!=Ask){//пришла новая котировка
    tmp=Ask;// выполняем какие-то действия...
    Print("ЕТО ЗАРАБОТАЛО!");
    break;//выходим из цикла после почти бесконечного числа итераций, которые тупо пригрузили мой проц
  }
}

Sie müssen break nicht verwenden; ich habe nur darauf hingewiesen, damit Sie nicht die Möglichkeit vergessen, den Iterationsfaden der Schleife zwangsweise zu unterbrechen.
Grund der Beschwerde: