Как кодировать? - страница 22

 

Вы всегда можете написать int crossTime = Time[0], когда у вас был крест, а затем использовать функцию iBarShift, используя переменную crossTime, чтобы проверить, сколько баров прошло.

 

Привет, Калензо,

Kalenzo:
Вы всегда можете написать int crossTime = Time[0], когда у вас был кросс, а затем использовать функцию iBarShift, используя переменную crossTime, чтобы проверить, сколько баров прошло.

Как бы вы написали этот код, чтобы включить в подсчет только "медвежьи бары"?

Я понимаю ibarshift, но это будет включать все бары с момента пересечения. Вам все равно придется использовать систему подсчета, как у меня, для подсчета "медвежьих баров", и я считаю, что именно в этом кроется моя проблема.

Изначально я тестировал свой код с этим кодом ..... Который работал отлично ...., но не переводился в вышеприведенный код, который на самом деле был бы указан в моем советнике.

int start()

{

//----

double f=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,0);

double s=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,0);

double fp=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,1);

double sp=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,1);

static bool CrossedUP,CrossedDn;

static int Count=0;

if(f>s && fp<=sp)

{

CrossedUP=true;

CrossedDn=false;

Alert(Symbol()," Crossed UP");

Count=0;

}

else

if(f=sp)

{

CrossedUP=false;

CrossedDn=true;

Alert(Symbol()," Crossed Down");

Count=0;

}

if(NewBar()==true && f>s || f<s) Count++;

Comment("Crossed UP: ",CrossedUP," Crossed Down: ",CrossedDn," Bars since Cross: ",Count);

//----

return(0);

}

Любые другие соображения были бы признательны.

Спасибо,

SaxMan

 

Извини, Омлет,

Это тоже не работает.

Спасибо,

SaxMan

omelette:
Привет. Попробуйте это.
bool LongClose()

{

if(MAFastC=MASlowP)

{

CrossedUp=false;

CrossedDn=true;

BarCount=0;

}

else

if(MAFastC>MASlowC && MAFastP<=MASlowP)

{

CrossedUp=true;

CrossedDn=false;

BarCount=0;

Alert("Crossed Down");

}

if(CrossedDn==true && NewBar()==true && Candle3mP=="Bear")

BarCount++;

if(BarCount>=2 && Candle3mC=="Bear")

{

Alert("Close Long Position");

return(true);

}

else return(false);
 

ограничение времени в коде советника

Я не могу понять, как установить временной лимит для моего советника.

строка кода выглядит следующим образом:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green).

Я пытался изменить этот ZERO на 1 или на 12 и не могу заставить его остановить сделку... Я хотел бы, чтобы сделка завершилась через 12 часов, как я могу это сделать?

Я использую бэктестинг, чтобы убедиться, что все работает... Функция expire работает с этим, верно?

 

Попробуйте это....

{

string expire_date = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alert ("Версия истекла");

return(0);

}

// код

return(0);

}

Дэйв

 
islandrock:
Я не могу понять, как установить ограничение по времени для моего советника.

строка кода выглядит следующим образом:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Я пытался изменить этот ZERO на 1 или на 12 и не могу заставить его остановить торговлю ... я хотел бы, чтобы сделка истекла через 12 часов, как я могу это сделать?

Я использую бэктестинг, чтобы убедиться, что он работает... Функция expire работает с этим, верно?

Проверьте канал ошибок;

Применение времени истечения отложенного ордера может быть отключено в некоторых торговых серверах. В этом случае, когда в параметре expiration указано ненулевое значение, генерируется ошибка 147 (ERR_TRADE_EXPIRATION_DENIED).

Параметр является переменной 'datetime' Я не верю, что 12 попадает в объявление этой переменной.

 
islandrock:
Я не могу установить временной лимит для моего советника.

строка кода выглядит следующим образом:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Я пытался изменить этот ZERO на 1 или на 12 и не могу заставить его остановить торговлю ... Я хотел бы, чтобы сделка истекла через 12 часов, как я могу это сделать?

Я использую бэктест, чтобы убедиться, что он работает. Функция expire работает с ним, верно?

Здравствуйте. Тайм-ауты истечения срока действия отлично работают в MT, единственная оговорка заключается в том, что некоторые брокеры не разрешают их использовать - FXDD является одним из них. Время истечения должно быть в формате даты, чтобы это работало - т.е.

datetime ExpirationTime = StrToTime(TimeYear(Time[0]) + "." + TimeMonth(Time[0])+ "." + TimeDay(Time[0])+" "+23+":"+55); OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point,"timetest",16384,ExpirationTime,Green);
 

Я пробовал это.

extern int TradeLifeHour=12;

extern int TradeLifeMin=00;

datetime expirationtime; (не знал, что сюда входит)

затем внутри start()

expirationtime = CurTime()+TradeLifeHour*60*60+TradeLifeMin*60;

и использовать expirationtime в области 0.

Я понял последний код, но не знаю, как настроить его, чтобы торговля завершилась через 12 часов.

 
xxDavidxSxx:
Попробуйте это....

{

string expire_date = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alert ("Версия истекла");

return(0);

}

// код

return(0);

}

Дэйв

Я просто использовал код, который я вам дал. Я изменил дату на 2006 и засунул его в случайное место внутри Bipoler на реальном денежном счете FXDD, и он сработал как шарм.

Или, может быть, слишком просто? Не знаю.

Дэйв

 

??

этот код не делает каждую сделку, которую открывает мой советник, истекающей через 12 часов с момента открытия...