Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы всегда можете написать int crossTime = Time[0], когда у вас был крест, а затем использовать функцию iBarShift, используя переменную crossTime, чтобы проверить, сколько баров прошло.
Привет, Калензо,
Вы всегда можете написать int crossTime = Time[0], когда у вас был кросс, а затем использовать функцию iBarShift, используя переменную crossTime, чтобы проверить, сколько баров прошло.
Как бы вы написали этот код, чтобы включить в подсчет только "медвежьи бары"?
Я понимаю ibarshift, но это будет включать все бары с момента пересечения. Вам все равно придется использовать систему подсчета, как у меня, для подсчета "медвежьих баров", и я считаю, что именно в этом кроется моя проблема.
Изначально я тестировал свой код с этим кодом ..... Который работал отлично ...., но не переводился в вышеприведенный код, который на самом деле был бы указан в моем советнике.
{
//----
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
Привет. Попробуйте это.
{
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);
}
Дэйв
Я не могу понять, как установить ограничение по времени для моего советника.
строка кода выглядит следующим образом:
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 попадает в объявление этой переменной.
Я не могу установить временной лимит для моего советника.
строка кода выглядит следующим образом:
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)
Я пытался изменить этот ZERO на 1 или на 12 и не могу заставить его остановить торговлю ... Я хотел бы, чтобы сделка истекла через 12 часов, как я могу это сделать?
Я использую бэктест, чтобы убедиться, что он работает. Функция expire работает с ним, верно?Здравствуйте. Тайм-ауты истечения срока действия отлично работают в MT, единственная оговорка заключается в том, что некоторые брокеры не разрешают их использовать - FXDD является одним из них. Время истечения должно быть в формате даты, чтобы это работало - т.е.
Я пробовал это.
extern int TradeLifeHour=12;
extern int TradeLifeMin=00;
datetime expirationtime; (не знал, что сюда входит)
затем внутри start()
expirationtime = CurTime()+TradeLifeHour*60*60+TradeLifeMin*60;
и использовать expirationtime в области 0.
Я понял последний код, но не знаю, как настроить его, чтобы торговля завершилась через 12 часов.
Попробуйте это....
{
string expire_date = "2007.10.22";
datetime expirevar = StrToTime(expire_date);
if ( CurTime() >= expirevar )
{
Alert ("Версия истекла");
return(0);
}
// код
return(0);
}
ДэйвЯ просто использовал код, который я вам дал. Я изменил дату на 2006 и засунул его в случайное место внутри Bipoler на реальном денежном счете FXDD, и он сработал как шарм.
Или, может быть, слишком просто? Не знаю.
Дэйв
??
этот код не делает каждую сделку, которую открывает мой советник, истекающей через 12 часов с момента открытия...