- Здравствуйте прошу помощи при авто валидации советника Автоматическое тестирование дало сообщение
- Неграль!
- программисты из Санкт-Петербурга?
Низнаю что такое Е-Трейлинг. сам лично пользуюсь таким вот тралом: (Автора не помню, но огромное ему спасибо, наз. функция Стоплоси)
Пишем
extern double StopLoss = 18;
после старта
int Trailingstoplossi (); (но нужны еще int cnt, ticket, total; )
и в низу
void Trailingstoplossi ()
{
int cnt, total;
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
// check for trailing stop
if(TrailingStop>0)
{
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(Point*TrailingStop,Digits))
{
if(OrderStopLoss()<NormalizeDouble(Bid-Point*TrailingStop, Digits) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((Bid-Point*TrailingStop),Digits),OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
// check for trailing stop
if(TrailingStop>0)
{
if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>NormalizeDouble((Point*TrailingStop),Digits))
{
if((NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble((Ask+Point*TrailingStop),Digits)) || (OrderStopLoss()==0))
{
Print("stop=",NormalizeDouble((Ask+Point*TrailingStop),Digits));
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((Ask+Point*TrailingStop),Digits),OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
Низнаю что такое Е-Трейлинг. сам лично пользуюсь таким вот тралом: (Автора не помню, но огромное ему спасибо, наз. функция Стоплоси)
Пишем
extern double StopLoss = 18;
после старта
int Trailingstoplossi (); (но нужны еще int cnt, ticket, total; )
и в низу
void Trailingstoplossi ()
{
int cnt, total;
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
// check for trailing stop
if(TrailingStop>0)
{
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(Point*TrailingStop,Digits))
{
if(OrderStopLoss()<NormalizeDouble(Bid-Point*TrailingStop, Digits) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((Bid-Point*TrailingStop),Digits),OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
// check for trailing stop
if(TrailingStop>0)
{
if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>NormalizeDouble((Point*TrailingStop),Digits))
{
if((NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble((Ask+Point*TrailingStop),Digits)) || (OrderStopLoss()==0))
{
Print("stop=",NormalizeDouble((Ask+Point*TrailingStop),Digits));
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((Ask+Point*TrailingStop),Digits),OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
А этот тралл подтягивается???
У меня просто не пишет ошибку, пишет вот такое предупреждение -
Function "Trailing" is not referenced and will be removed from exp-file
Function "TrailingPositions" is not referenced and will be removed from exp-file
Function "ModifyStopLoss" is not referenced and will be removed from exp-file
Как с этим жить?
Ща ламе разбираться, но попробуйте процедуру start() сделать функцией start()
void start() меняем на int start()
Hoper23 писал(а) >>
Есть советник, надо включить в него E-Trailing. Как ни пытался-все пустое, не хочет он видеть как надо. Пока приходится двумя разными совами держать на 2-х графиках. Тралл Игоря Кима, вставлял в конец своего советника, ну после того, как заканчивается start, как и надо по идее, но что то не получается.-
extern bool AllPositions =True; // Управлять всеми позициями extern bool ProfitTrailing=True; // Тралить только профит extern int TrailingStop =15; // Фиксированный размер трала extern int TrailingStep =2; // Шаг трала extern bool UseSound =True; // Использовать звуковой сигнал extern string NameFileSound ="expert.wav"; // Наименование звукового файла //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() { for(int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (AllPositions || OrderSymbol()==Symbol()) { TrailingPositions(); } } } }
Ну,.. тады извиняйте.
НУ я же тебе говорю, тралл под VOID а сам советник INT.
double GetSizeLot; extern bool AllPositions =True; // Управлять всеми позициями extern bool ProfitTrailing=True; // Тралить только профит extern int TrailingStop =15; // Фиксированный размер трала extern int TrailingStep =2; // Шаг трала extern bool UseSound =True; // Использовать звуковой сигнал extern string NameFileSound ="expert.wav"; // Наименование звукового файла int TRAL; int start() { double MidLot; double profit=0; int j=OrdersTotal()-1; .................. (И В КОНЦЕ) dLot = LotsMax; return(dLot); } void TRAL() { for(int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (AllPositions || OrderSymbol()==Symbol()) .......................
И на все это выдается предупреждение АЛЯ-
Function "Trailing" is not referenced and will be removed from exp-file
Function "TrailingPositions" is not referenced and will be removed from exp-file
Function "ModifyStopLoss" is not referenced and will be removed from exp-file
ВОТ ЧТО ЭТО ТАКОЕ??? И КАК МНЕ ВМАЗАТЬ ИМЕННО ЭТОТ ТРАЛЛ???
Да нет никакой разницы, если вам не надо возвращать значение из функции, просто вызывайте ее, и все
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования