评论 自动交易锦标赛 200727
Mishell писал(а): Пока жду пятницу, там проверю. Сейчас журнал смотрел тестера
демо Альпари, там после 8-й волны, сразу 329 (2007.11.20 09:08) и потом 330.
Хотя на торговле здесь же стоит и WaveNum=0. Но с этим вроде понятно,
вы уже писали что переменную надо добавить. Сейчас медитирую
над кодом :)
У меня после аварийного завершеения работы тестер показал WaveNum=1194. После перезагрузки снова WaveNum=1. Надр разработчикам снабдить MQ4 "человеческими" средствами отладки.
А проблема в следующем: case Go : {WaveNum=1; MainTrend=Down; =================================== Сначала попадаем в if(MainTrend!=Down) , меняем WaveNum на 1 у меня в 8:32 2007. 11.20 , потом соответственно MainTrend=Down на следующем тике заходим попадаем в else и если срабатывает if(TimeCurrent()- LastMainDnGoWeek>86400*40) прибавляем WaveNum++ и т.д. на каждом тике пока LastMainDnGoWeek не поменяется, а он меняется только когда следующий ордер открывается в 9:08 у меня тоже. Т.е. у кого сколько насчитает 1194, 329 или 465. if(TimeCurrent()- LastMainDnGoWeek>86400*40) {WaveNum++;SetGlobVar("gWaveNum"+Symbol(),WaveNum); LastMainDnGoWeek=TimeCurrent();}//Wave counter если так поменять, то WaveNum = 2 получается. У кого WaveNum = 1 - то явно просто на >86400*40 не заходит. 2007.12.27 10:16 27
Не хотелось мучаться по F3 постоянно, добавил код вывода переменных
в окно с графиком
//+------------------------------------------------------------------+ string GetTrend(double val) { if (val==Unknown)return("Unknown"); else if(val==Down)return ("Down"); else if(val==Flat)return ("Flat"); else if(val==Up)return ("Up"); return (val); } string GetSignal(double val) { if (val==NoSignal)return ("NoSignal"); else if(val==Ready)return ("Ready"); else if(val==Ready1)return ("Ready1"); else if(val==Ready2)return ("Ready2"); else if(val==Go)return ("Go!"); return (val); } //+------------------------------------------------------------------+ void ShowInfo() { string info=""; if (GlobalVariableCheck("gMainTrend"+Symbol())) info=info+"gMainTrend="+GetTrend(GlobalVariableGet("gMainTrend"+Symbol()))+"\n"; if (GlobalVariableCheck("gLocalTrend"+Symbol())) info=info+"gLocalTrend="+GetTrend(GlobalVariableGet("gLocalTrend"+Symbol()))+"\n"; if (GlobalVariableCheck("gSmallTrend"+Symbol())) info=info+"gSmallTrend="+GetTrend(GlobalVariableGet("gSmallTrend"+Symbol()))+"\n"; //-------- if (GlobalVariableCheck("gWaitUp"+Symbol())) info=info+"gWaitUp="+GetSignal(GlobalVariableGet("gWaitUp"+Symbol()))+"\n"; if (GlobalVariableCheck("gWaitDn"+Symbol())) info=info+"gWaitDn="+GetSignal(GlobalVariableGet("gWaitDn"+Symbol()))+"\n"; if (GlobalVariableCheck("gWaitCorre"+Symbol())) info=info+"gWaitCorre="+GetSignal(GlobalVariableGet("gWaitCorre"+Symbol()))+"\n"; if (GlobalVariableCheck("gWaitSmallUp"+Symbol())) info=info+"gWaitSmallUp="+GetSignal(GlobalVariableGet("gWaitSmallUp"+Symbol()))+"\n"; if (GlobalVariableCheck("gWaitSmallDn"+Symbol())) info=info+"gWaitSmallDn="+GetSignal(GlobalVariableGet("gWaitSmallDn"+Symbol()))+"\n"; if (GlobalVariableCheck("gWaitSmallCont"+Symbol())) info=info+"gWaitSmallCont="+GetSignal(GlobalVariableGet("gWaitSmallCont"+Symbol()))+"\n"; //------ if (GlobalVariableCheck("gWaveNum"+Symbol())) info=info+"gWaveNum"+"="+DoubleToStr(GlobalVariableGet("gWaveNum"+Symbol()),0)+"\n"; if (GlobalVariableCheck("sWaitTime"+Symbol())) info=info+"sWaitTime"+"="+TimeToStr(GlobalVariableGet("sWaitTime"+Symbol()),TIME_DATE|TIME_SECONDS)+"\n"; if (GlobalVariableCheck("bWaitTime"+Symbol())) info=info+"bWaitTime"+"="+TimeToStr(GlobalVariableGet("bWaitTime"+Symbol()),TIME_DATE|TIME_SECONDS)+"\n"; //------ info=info+"--------------------------\n"; info=info+"MainTrend="+GetTrend(MainTrend)+"\n"; info=info+"LocalTrend="+GetTrend(LocalTrend)+"\n"; info=info+"WaitUp="+GetSignal(WaitUp)+"\n"; info=info+"WaitDn="+GetSignal(WaitDn)+"\n"; info=info+"WaitCorre="+GetSignal(WaitCorre)+"\n"; info=info+"WaitSmallUp="+GetSignal(WaitSmallUp)+"\n"; info=info+"WaitSmallDn="+GetSignal(WaitSmallDn)+"\n"; info=info+"WaitSmallCont="+GetSignal(WaitSmallCont)+"\n"; info=info+"WaveNum"+"="+WaveNum+"\n"; info=info+"sStartWaitingTime"+"="+TimeToStr(sStartWaitingTime,TIME_DATE|TIME_SECONDS)+"\n"; info=info+"bStartWaitingTime"+"="+TimeToStr(bStartWaitingTime,TIME_DATE|TIME_SECONDS)+"\n"; Comment(info); return; }и, соответсвенно, вызов надо вставить в start() { ShowInfo(); .... } Михаил, а что за значение TakeYourTime, использующееся только для WaitDn ? при тестировании оно ни разу не попалось. 2007.12.26 12:11 27
Mishell писал(а):
Думаю(уверен) , что в случае смены глобального тренда советник
нужно будет не настраивать, а переписывать. Скорее всего дописывать. :)Вот и хочу проверить его работу при нисходящем глобальном тренде. Mishell писал(а): Я преобразовал код на этотСпасибо. Хотя я пока не уложу в голове, что добавление "=" так повлияло. Надо покопаться в коде. Может что для себя новое выясню. while ( ((iHigh(NULL,TimeFrame,BeginBar)+sAddpips*Point)<iHigh(NULL,TimeFrame, TopBar) || iBullsPower( NULL, TimeFrame, BullsPeriod, PRICE_CLOSE, BeginBar)>= iBullsPower( NULL, TimeFrame, BullsPeriod, PRICE_CLOSE, TopBar) ) && UpWaveNum<MaxWaveNum && iBullsPower( NULL, TimeFrame, BullsPeriod, PRICE_CLOSE, TopBar)>=0 ) и добавил в тело вывод в лог;в определенный момент при BullsPower =0 процедура просто зацикливалась, причем вне зависимости от TopBar BullsPower оставалось нулем, похоже это какая-то ошибка тестера MT. С альтернативной функцией BreackDownTrendCondition такого замечено не было, хотя для уверенности тоже = добавил. ooommm писал(а): Крестиком? ;)... И еще я вышивать умею. 2007.12.26 11:35 10
Investment business. Please, send your contact info to forex-investor@mail.ru 2007.12.26 09:27 6
Investment business. Please, send your contact info to forex-investor@mail.ru 2007.12.26 09:12 5
Investment business. Please, send your contact info to forex-investor@mail.ru 2007.12.26 09:10 4
Investment business. Please, send your contact info to forex-investor@mail.ru 2007.12.26 09:09 3
Investment business. Please, send your contact info to forex-investor@mail.ru 2007.12.26 09:05 |
|






init() {
....
if (! IsTesting())
{
......
}
почемуто отсутствует присвоение WaveNum=GlobalVariableGet("gWaveNum"+Symbol()); ?