评论 自动交易锦标赛 2007

27
В ф-ции
init() {
....
if (! IsTesting())
{
......
}


почемуто отсутствует присвоение WaveNum=GlobalVariableGet("gWaveNum"+Symbol()); ?

2007.12.27 11:06
 
27
Mishell писал(а):


Как прошел тест?

У меня после аварийного завершеения работы тестер показал WaveNum=1194. После перезагрузки снова WaveNum=1. Надр разработчикам снабдить MQ4 "человеческими" средствами отладки.

Пока жду пятницу, там проверю. Сейчас журнал смотрел тестера демо Альпари, там после 8-й волны, сразу 329 (2007.11.20 09:08) и потом 330. Хотя на торговле здесь же стоит и WaveNum=0. Но с этим вроде понятно, вы уже писали что переменную надо добавить. Сейчас медитирую над кодом :)


У меня WaveNum 465 сейчас на Alpari, на FXDD =1. Тоже в этом месте ( 2007.11.20 ) поменялась на 464 сначала.

А проблема в следующем:

case Go :
{
MainShortOrder(OrderNum,MainShortMagic);
if(MainTrend!=Down)

{WaveNum=1;
SetGlobVar("gWaveNum"+Symbol(), 1);}
else if(TimeCurrent()- LastMainDnGoWeek>86400*40)
{WaveNum++;SetGlobVar("gWaveNum"+Symbol(), WaveNum);}//Wave counter

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
 
11
maxfade写下:
Code Base 'Disaster'

Thank you very much,i whill study!
2007.12.26 18:55
 
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
 
网页: 
总量: 4680