Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
bool flag=false;
int start(){
int ticket;
..........
// обработка условий для входа
if (.......) flag=flase
if (!flag) {
ticket=OrderSend(......);
}
if (ticket>0) flag=true;
}
Примерно так.
extern double Lots = 0.1;
extern double TrailingStop = 30;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
bool flag=false;
double ma_tm, ma_tm1, ma_ts, ma_ts1;
double ma_dm, ma_ds;
int cnt, ticket, total;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
ma_tm=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
ma_tm1=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,2);
ma_ts=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
ma_ts1=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,2);
ma_dm=iMACD("GBPJPY",PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
ma_ds=iMACD("GBPJPY",PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
//задали все данные для МАСD
total=OrdersTotal();
if(total<1)
{
// Проверка свободной маржи
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// Условие открытие позиции BUY
if(ma_dm>ma_ds&&ma_ts1>ma_tm1&&ma_tm>ma_ts)
{
flag=false;
if (!flag)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",16384,0,Green);
if(ticket>0)flag=true;
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
return(0);
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
// Условие открытие позиции SELL
if(ma_ds>ma_dm&&ma_tm1>ma_ts1&&ma_ts>ma_tm)
{
flag=false;
if (!flag)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",16384,0,Red);
if(ticket>0) flag=true;
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
return(0);
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // длинная позиция открыта
{
// условие закрытие длинной позиции
if(ma_tm1>ma_ts1&&ma_ts>ma_tm)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}
// трейлинг-стоп для длинной позиции
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(), 0,Green);
return(0);
}
}
}
}
else
{
// условие закрытия короткой позиции
if(ma_ts1>ma_tm1&&ma_tm>ma_ts)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}
// трейлинг-стоп для короткой позиции
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(), 0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
Может сперва сформулируешь условия смены флага на бумаге. Например.
1. Есть открытые ордера - flag=true
2. Мы сами закрыли ордер - flag=false
3, Не закончился бар и flag=true, оставить как есть.
И так далее.
Нужно расписать все варианты в каких случаях какое значение принимает флаг.
Пока ты безо всяких оснований меняшь значения флага.
И возможно тебе понадобится еще один флаг (для контроля закрытия бара).
Как при написаниии советника, вызвать пользовательские индикоторы ZigZag и Heiken Ashi?
При использовании "обычного" индикатора значения устанавливаюся ma=iMA(NULL...). Как быть здесь пожалуйста покажите на примере с небольшим кодом!
Заранее спасибо!
Не буду открывать новой страницы, спрошу здесь.
Как при написаниии советника, вызвать пользовательские индикоторы ZigZag и Heiken Ashi?
При использовании "обычного" индикатора значения устанавливаюся ma=iMA(NULL...). Как быть здесь пожалуйста покажите на примере с небольшим кодом!
Заранее спасибо!
Через iCustom().
Через iCustom().
Не нашел инфомацию про эту функцию. Где можно посмотреть. распишите для примера индикатор ZigZag для
нулевого бара, какие параметры в iCustom(?,?,?,...)?