Ответить
27.12.2014, 21:57
Аватар для Yura Vakulenko
Yura Vakulenko Yura Vakulenko вне форума Активный участник
Регистрация: 04.12.2013 / Адрес: Швейцария, Cham / Сообщений: 129
Поблагодарили 76 раз(а) / Репутация: 77

Фундаментальный анализ помогите с кодом!

ребята, привет!
Помогите сделать так, чтобы советник открывал и закрывал сделки по стрелкам.. (воявилась стрелка ввер - открывает покупки и закрывает продажи, если такие есть.. и наоборот) стрелки не рисуются! и появляются на 1-м баре.. по открытию текущего. НУЖНО ЧТОБЫ ТОРГОВАЛ СОВЕТНИК ТОЛЬКО ПО ОТКРЫТИЮ ТЕКУЩЕГО БАРА. Это простейший советник для проверки мат. ожидания от торговли чисто по сигналам индикатора. Сделки открываются с фикс. лотом. Без ТП и СЛ.

Индикатор не могу скинуть, потому как он платный..

у индикатора 2 буфера. 1й- покупки, 2й - продажи

Условия стрелки ВВЕРХ:
на 1-м баре: 1й буфер равен 2му буферу
на 2-м баре: 1й буфер пуст, а 2й буфер не пуст и содержит цену

Условия стрелки ВНИЗ:
на 1-м баре: 1й буфер равен 2му буферу
на 2-м баре: 1й буфер не пуст и содержит цену, а 2й буфер пуст

Должен открывать сделки ТОЛЬКО ПО ОТКРЫТИЮ БАРА! не на каждом тике.

вот я написал код.. но что-то не открываются сделки. Хотя индикатор вызывается корректно и его параметры тоже. (в режиме визуализации индикатор отображается с нужными параметрами)

КОД СОВЕТНИКА




#property copyright "0ll"
#property strict

input double lot = 0.1;
input int SmoothPeriod = 5;
input int SmoothMethod = 1;
input int TP = 0;
input int SL = 0;

input int Magic = 24011;

int OnInit()
{

return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason) { }

int idir = -1, odir = -1, ocnt = 0;
double opl = 0, bufBuy, bufSell, bufBuy2, bufSell2;

void OnTick()
{
if (!NewBar()) return;
ordCount();
bufBuy = iCustom(NULL,0,"Market\\volution",SmoothPeriod,SmoothMethod,0,1,1);
bufBuy2 = iCustom(NULL,0,"Market\\volution",SmoothPeriod,SmoothMethod,0,1,2);
bufSell = iCustom(NULL,0,"Market\\volution",SmoothPeriod,SmoothMethod,0,2,1);
bufSell2 = iCustom(NULL,0,"Market\\volution",SmoothPeriod,SmoothMethod,0,2,2);
idir = -1;
if (bufBuy == bufSell && bufBuy2 == EMPTY_VALUE && bufSell2 != EMPTY_VALUE) idir = OP_BUY;
if (bufBuy == bufSell && bufBuy2 != EMPTY_VALUE && bufSell2 == EMPTY_VALUE) idir = OP_SELL;
// if (odir >= 0 && opl > 2)ordClose(odir);
if (idir == 1 - odir)
{
ordClose(odir);
}
if (idir >= 0 && odir < 0) ordOpen(idir);
}
//+------------------------------------------------------------------+

void ordOpen(int dir)
{
int tik=-1;
tik = OrderSend(_Symbol,dir,lot,(dir==OP_BUY?Ask:Bid),10,0,0,"Check_Indi",Magic,0,(dir==OP_BUY?Blue:Red));
if (tik > 0)
{
odir = dir; ocnt = 1;
OrderSelect(tik, SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),(dir==OP_BUY?Bid-SL*_Point:Ask+SL*_Point),(dir==OP_BUY?Bid+TP*_Point:Ask-TP*_Point),0);
}
}

void ordClose(int dir)
{
if (OrderClose(OrderTicket(),OrderLots(), (dir==OP_BUY?Bid:Ask),10, Gray)) { odir = -1; ocnt = 0; opl = 0; }
}

void ordCount()
{
int no;
odir = -1; ocnt = 0; opl = 0;

for (no=0; no < OrdersTotal(); no++) //Сбор инфы об открытых ордерах
{
if (!OrderSelect(no, SELECT_BY_POS, MODE_TRADES)) continue;
if (!(OrderSymbol()== _Symbol && OrderMagicNumber() == Magic)) continue;

odir = OrderType();
ocnt++;
opl += OrderProfit()+OrderCommission()+OrderSwap();
}
}



bool NewBar()
{
static datetime new_Bar;
if (new_Bar == Time[1]) return(false); //Если бар не закрыт - выход
new_Bar = Time[1];
return(true);
}


[свернуть]


Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko
28.12.2014, 12:38
Аватар для Ramil-2427
Ramil-2427 Ramil-2427 вне форума Местный житель
Регистрация: 12.04.2013 / Адрес: Башкортостан, г.Октябрьский / Сообщений: 523
Поблагодарили 222 раз(а) / Репутация: 222
Будьте добры сделать из него TMA или хоть подскажите как!
28.12.2014, 14:39
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,849
Поблагодарили 9,507 раз(а) / Репутация: 9512
пожалуйста, кто-то может изменить этот признак и добавить оповещения по электронной почте, чтобы покупать и продавать?
AlertsMessage, AlertsSound, AlertsEmail, AlertsNotification & SignalBar:

Последний раз редактировалось mobidik; 28.12.2014 в 14:50.
28.12.2014, 15:26
Аватар для Yura Vakulenko
Yura Vakulenko Yura Vakulenko вне форума Активный участник
Регистрация: 04.12.2013 / Адрес: Швейцария, Cham / Сообщений: 129
Поблагодарили 76 раз(а) / Репутация: 77

Вопрос Нужна помощь!


Вот индикатор. по нему не выходит у меня написать советник.. Работать должен только ПО ОТКРЫТИЮ БАРА! и заключать покупки (закрывать продажи если такие есть) при стрелке вверх. И заключать продажи (закрывать покупки если такие есть) при стрелке вниз. Фиксир. лотом без ТП И СЛ.

КОД СОВЕТНИКА



Код:
#property copyright "l"
#property strict

input double lot = 0.1;
input int Period = 5;
input int TP = 0;
input int SL = 0;

input int Magic = 24011;

int OnInit()
  {
   
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)  {  }

int idir = -1, odir = -1, ocnt = 0;
double opl = 0, bufBuy, bufSell, bufBuy2, bufSell2;

void OnTick()
  {
   if (!NewBar()) return;
   ordCount();
   bufBuy   = iCustom(NULL,0,"Arrows",Period,0,1);
   bufBuy2   = iCustom(NULL,0,"Arrows",Period,0,2);
   bufSell  = iCustom(NULL,0,"Arrows",Period,1,1);
   bufSell2  = iCustom(NULL,0,"Arrows",Period,1,2);
   idir = -1;
   if (bufBuy == bufSell && bufBuy2 == EMPTY_VALUE && bufSell2 != EMPTY_VALUE) idir = OP_BUY;
   if (bufBuy == bufSell && bufBuy2 != EMPTY_VALUE && bufSell2 == EMPTY_VALUE) idir = OP_SELL;
 //  if (odir >= 0 && opl > 2)ordClose(odir);
   if (idir == 1 - odir)
   {
      ordClose(odir);
   }
   if (idir >= 0 && odir < 0) ordOpen(idir);
  }
//+------------------------------------------------------------------+

void ordOpen(int dir)
{
   int tik=-1;
   tik = OrderSend(_Symbol,dir,lot,(dir==OP_BUY?Ask:Bid),10,0,0,"Check_Indi",Magic,0,(dir==OP_BUY?Blue:Red));
   if (tik > 0)
   {
      odir = dir; ocnt = 1;
      OrderSelect(tik, SELECT_BY_TICKET);
      OrderModify(OrderTicket(),OrderOpenPrice(),(dir==OP_BUY?Bid-SL*_Point:Ask+SL*_Point),(dir==OP_BUY?Bid+TP*_Point:Ask-TP*_Point),0);
   }
}

void ordClose(int dir)
{
   if (OrderClose(OrderTicket(),OrderLots(), (dir==OP_BUY?Bid:Ask),10, Gray)) { odir = -1; ocnt = 0; opl = 0; }
}

void ordCount()
{
   int  no;
   odir = -1; ocnt = 0;  opl = 0;
   
   for (no=0; no < OrdersTotal(); no++)                     //Сбор инфы об открытых ордерах
   {
      if (!OrderSelect(no, SELECT_BY_POS, MODE_TRADES))                continue;
      if (!(OrderSymbol()== _Symbol && OrderMagicNumber() == Magic))   continue;
      
      odir = OrderType();
      ocnt++;
      opl += OrderProfit()+OrderCommission()+OrderSwap();
   }
}



bool     NewBar()
{
   static datetime new_Bar;                       
   if (new_Bar == Time[1]) return(false);        //Если бар не закрыт - выход
       new_Bar  = Time[1];
return(true);
}
[свернуть]


Спасибо!
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko
28.12.2014, 16:21
Аватар для mickael58
mickael58 mickael58 вне форума Активный участник
Регистрация: 19.04.2014 / Сообщений: 71
Поблагодарили 30 раз(а) / Репутация: 31
AlertsMessage, AlertsSound, AlertsEmail, AlertsNotification & SignalBar:
спасибо, спасибо, спасибо, спасибо, вы действительно здорово !!!!!
28.12.2014, 19:42
Аватар для Vyacheslav88
Vyacheslav88 Vyacheslav88 вне форума Местный знаток
Регистрация: 30.01.2014 / Сообщений: 279
Поблагодарили 987 раз(а) / Репутация: 988
Здравствуйте Yura Vakulenko. Нашёл на просторах интернета.
28.12.2014, 20:08
Аватар для Yura Vakulenko
Yura Vakulenko Yura Vakulenko вне форума Активный участник
Регистрация: 04.12.2013 / Адрес: Швейцария, Cham / Сообщений: 129
Поблагодарили 76 раз(а) / Репутация: 77
Сообщение от: Vyacheslav88
Здравствуйте Yura Vakulenko. Нашёл на просторах интернета.
Огромное спасибо, Друг! сейчас разберусь))
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko
28.12.2014, 23:27
Аватар для sordex2
sordex2 sordex2 вне форума Интересующийся
Регистрация: 20.03.2011 / Сообщений: 6
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Делаю репост поста. Всех участников форума, поздравляю с наступающими праздниками!
Уважаемые програмисты прошу доработать советник Forex Transporter.mq4, чтобы он открывал ордера по показаниям этого индикатора THV3 Trix v4.01 Div.mq4 . Заранее большое спасибо.
29.12.2014, 06:12
Аватар для jenzo
jenzo jenzo на форуме Местный знаток
Регистрация: 10.07.2014 / Сообщений: 562
Поблагодарили 579 раз(а) / Репутация: 580
Ребята, если есть выведите настройки пожалуйста
29.12.2014, 08:53
Аватар для oliva1
oliva1 oliva1 вне форума Элитный участник
Регистрация: 19.01.2011 / Сообщений: 479
Поблагодарили 1,194 раз(а) / Репутация: 1193
Уважаемые!
Просьба поправить инкикатор.
Показывает ТП и СЛ, но не показывает от какого уровня и в какую сторону.
Пожалуйста!
29.12.2014, 10:25
Аватар для Dominowka
Dominowka Dominowka вне форума Активный участник
Регистрация: 13.02.2012 / Сообщений: 170
Поблагодарили 118 раз(а) / Репутация: 119
Всех с наступающим помогите не видит терминал.
29.12.2014, 10:37
Аватар для oliva1
oliva1 oliva1 вне форума Элитный участник
Регистрация: 19.01.2011 / Сообщений: 479
Поблагодарили 1,194 раз(а) / Репутация: 1193
Всех с наступающим помогите не видит терминал.
Помочь могут только имея исходник формата .mq4!!!
29.12.2014, 11:21
Аватар для kipjatok001
kipjatok001 kipjatok001 вне форума Почётный гражданин
Регистрация: 13.09.2012 / Сообщений: 424
Поблагодарили 377 раз(а) / Репутация: 378
Ребята, всем Привет. Доработайте пожалуйста прибыльный советник.
Нужно сделать:
1. ТП Каждого ордера
2. Мартингейл выставления ордеров (каждый следующий ордер в х раз больше следующего)
3.Хорошой полноценный тралл
Заранее спасибо всем откликнувшимся.
С Наступающим
RS 7v_cool.mq4
29.12.2014, 12:08
Аватар для Dominowka
Dominowka Dominowka вне форума Активный участник
Регистрация: 13.02.2012 / Сообщений: 170
Поблагодарили 118 раз(а) / Репутация: 119
Помочь могут только имея исходник формата .mq4!!!
Если б он был..
29.12.2014, 12:18
Аватар для oliva1
oliva1 oliva1 вне форума Элитный участник
Регистрация: 19.01.2011 / Сообщений: 479
Поблагодарили 1,194 раз(а) / Репутация: 1193
Если б он был..
Попробуй сам починить машину не прикасаясь к ней!!!
Это то, что ты просишь! Полная аналогия!
29.12.2014, 12:37
Аватар для Ramil-2427
Ramil-2427 Ramil-2427 вне форума Местный житель
Регистрация: 12.04.2013 / Адрес: Башкортостан, г.Октябрьский / Сообщений: 523
Поблагодарили 222 раз(а) / Репутация: 222
Всех с наступающим помогите не видит терминал.
У меня все нормально отображается!
29.12.2014, 13:08
Аватар для Dominowka
Dominowka Dominowka вне форума Активный участник
Регистрация: 13.02.2012 / Сообщений: 170
Поблагодарили 118 раз(а) / Репутация: 119
Попробуй сам починить машину не прикасаясь к ней!!!
Это то, что ты просишь! Полная аналогия!
Мог бы просто написать что нет открывашки
29.12.2014, 16:11
Аватар для Yura Vakulenko
Yura Vakulenko Yura Vakulenko вне форума Активный участник
Регистрация: 04.12.2013 / Адрес: Швейцария, Cham / Сообщений: 129
Поблагодарили 76 раз(а) / Репутация: 77
подскажите, как мне изменить код советника, чтобы была соблюдена следующая логика закрытия позиций. Для большей наглядности - я все изобразил на картинках.

Позиция закрывается полностью (100% объема) по противоположному сигналу (Большая КРАСНАЯ \ СИНЯЯ стрелки) и позиция закрывается частично по дополнительным сигналам (Маленькие желтые\синие стрелки). Все стрелки формируются на 1-м баре. И советник работает только по открытию бара.

т.е. Основной сигнал на закрытие позиции (и открытие противоположной) - это БОЛЬШИЕ СТРЕЛКИ

Дополнительный сигнал на закрытие Основной позиции - это маленькие стрелки. (Желтая малая стрелка - закрытие продаж. Синяя малая стрелка - закрытие покупок.)

Логика закрытия:

за начальную точку отсчета берется время открытия основной позиции. Одновременно в рынке может быть открыта 1 основная позиция ( по ОСНОВНОМУ СИГНАЛУ - БОЛЬШИЕ СТРЕЛКИ)

Малые стрелки, чтобы использовать их в роли доп. сигнала на закрытие - должны появится только после открытия основной позиции.

появилась 1-я малая стрелка - закрываем 25 % основной позиции. (при условии, что цена открытия нового бара, после появления малой стрелки больше\меньше внешней переменной N ). Если условие верно, тогда закрываем 25% основной позиции. Если не верно - тогда закрываем 0% основной позиции. На данном этапе закрыто или 0% или 25% основной позиции.

появилась 2-я малая стрелка - закрываем еще 25% основной позиции. (при условии, что на первой стрелке уже было закрытие 25 % основной позиции. если же такого закрытия не было, тогда закрываем 50% основной позиции.) На данном этапе закрыто или 50% основной позиции.

появилась 3-я малая стрелка - закрываем еще 25% основной позиции.
На данном этапе закрыто или 75% основной позиции.

появилась 4-я малая стрелка - закрываем еще 25% основной позиции. На данном этапе закрыто 100% основной позиции. Т.е. ордер закрыт. 4-я стрелка появляется крайне редко! в основном их только 3. и оставшиеся 25% позиции, после первых 3-х стрелок закрываются по основному противоположному сигналу.

если же не появилось ни одной из малых стрелок, тогда позиция закрывается на 100% по против. основному сигналу.

Для того, чтобы логика закрытия была более понятной - я сделал рисунки с детальными подписями.. и там в местах закрытия подписал, какая часть позиции должна быть закрыта. Все соответсвует текущему словесному описанию алгоритма.

Условие появления доп. стрелок - я смогу составить и сам.. но, я, к сожалению, не смогу вам скинуть индикатор, который их рисует, все по той же причине - он привязан к моему ПК и счету и на другом ПК и счете работать не будет..

Помогите встроить такую функцию в код советника.

а вот текущий код советника..

КОД СОВЕТНИКА


//+------------------------------------------------------------------+
//| indicator_test.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
//--------------------------------------------------------------------
extern int SmoothPeriod = 5,
SmoothMethod = 1,
Notify = 0;
extern double stoploss = 0,
takeprofit = 0,
TrailingStop = 0;
extern double LOT = 0.1;
extern bool Close_on_Oposite = true;
extern bool Buy_allow = true;
extern bool Sell_allow = true;
extern bool mode_reverse = false;
//--------------------------------------------------------------------
int STOPLEVEL,Magic=1234567890;


//--------------------------------------------------------------------

int OnInit()
{

return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason) { }


void OnTick()
{
if (!NewBar()) return;
STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
if (TrailingStop>=STOPLEVEL) TrailingStop();

double bufBuy, bufBuy2,bufSell,bufSell2;

//bufBuy = iCustom(NULL,0,"Arrows",SmoothPeriod,0,1);
//bufSell = iCustom(NULL,0,"Arrows",SmoothPeriod,1,1);

bufBuy = iCustom(NULL,0,"Market\\evolution",SmoothPeriod,SmoothMethod,Notify,0,1);
bufBuy2 = iCustom(NULL,0,"Market\\evolution",SmoothPeriod,SmoothMethod,Notify,0,2);
bufSell = iCustom(NULL,0,"Market\\evolution",SmoothPeriod,SmoothMethod,Notify,1,1);
bufSell2 = iCustom(NULL,0,"Market\\evolution",SmoothPeriod,SmoothMethod,Notify,1,2);

double SL,TP;
if (Buy_allow)
{
if (bufBuy==bufSell && bufSell2 !=0 && bufBuy2 == 0)//if (bufBuy != 0 && bufSell == 0 )//
{
if (!mode_reverse)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Bid - stoploss*Point,Digits); else SL = 0;
if (Close_on_Oposite) CLOSEORDER(OP_SELL);
int tik_buy = OrderSend(Symbol(),OP_BUY,LOT,NormalizeDouble(Ask,Digits),2,SL,TP,"Ind check buy",Magic,0,clrBlue);
if(tik_buy>0)
{
if(OrderSelect(tik_buy,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order #",tik_buy," opened : ",NormalizeDouble(OrderOpenPrice(),Digits));
}
else
Print("Error opening BUY order #",tik_buy," : ",GetLastError());
}

else

{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Ask + stoploss*Point,Digits); else SL = 0;
if (Close_on_Oposite) CLOSEORDER(OP_BUY);
int tik_sell_on_reverse_buy = OrderSend(Symbol(),OP_SELL,LOT,NormalizeDouble(Bid,Digits),2,SL,TP,"Ind check sell",Magic,0,clrRed);
if(tik_sell_on_reverse_buy>0)
{
if(OrderSelect(tik_sell_on_reverse_buy,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order #",tik_sell_on_reverse_buy," opened : ",NormalizeDouble(OrderOpenPrice(),Digits));
}
else
Print("Error opening SELL order #",tik_sell_on_reverse_buy," : ",GetLastError());

}

}
}

if (Sell_allow)
{
if (bufBuy==bufSell && bufSell2 ==0 && bufBuy2 != 0)//if (bufSell != 0 && bufBuy == 0)//
{
if (!mode_reverse)
{

if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Ask + stoploss*Point,Digits); else SL = 0;
if (Close_on_Oposite) CLOSEORDER(OP_BUY);
int tik_sell = OrderSend(Symbol(),OP_SELL,LOT,NormalizeDouble(Bid,Digits),2,SL,TP,"Ind check sell",Magic,0,clrRed);
if(tik_sell>0)
{
if(OrderSelect(tik_sell,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order #",tik_sell," opened : ",NormalizeDouble(OrderOpenPrice(),Digits));
}
else
Print("Error opening SELL order #",tik_sell," : ",GetLastError());

}

else

{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Bid - stoploss*Point,Digits); else SL = 0;
if (Close_on_Oposite) CLOSEORDER(OP_SELL);
int tik_buy_on_reverse_sell = OrderSend(Symbol(),OP_BUY,LOT,NormalizeDouble(Ask,Digits),2,SL,TP,"Ind check buy",Magic,0,clrBlue);
if(tik_buy_on_reverse_sell>0)
{
if(OrderSelect(tik_buy_on_reverse_sell,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order #",tik_buy_on_reverse_sell," opened : ",NormalizeDouble(OrderOpenPrice(),Digits));
}
else
Print("Error opening BUY order #",tik_buy_on_reverse_sell," : ",GetLastError());

}
}
}

//return (0);
}
//--------------------------------------------------------------------
void CLOSEORDER(int ord)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if (OrderType()==OP_BUY && ord==OP_BUY)
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,CLR_NONE);
if (OrderType()==OP_SELL && ord==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,CLR_NONE);
}
}
}
}
//--------------------------------------------------------------------
void TrailingStop()
{
int tip,Ticket;
double StLo,OSL,OOP;
for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS)==true)
{ tip = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
Ticket = OrderTicket();
if (tip==OP_BUY)
{
StLo = NormalizeDouble(Bid-TrailingStop*Point,Digits);
if (StLo > OSL && StLo > OOP)
{ if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))
Print("TrailingStop Error ",GetLastError()," buy SL ",OSL,"->",StLo);
}
}
if (tip==OP_SELL)
{
StLo = NormalizeDouble(Ask+TrailingStop*Point,Digits);
if (StLo > OOP || StLo==0) continue;
if (StLo < OSL || OSL==0 )
{ if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))
Print("TrailingStop Error ",GetLastError()," sell SL ",OSL,"->",StLo);
}
}
}
}
}

}

//--------------------------------------------------------------------

bool NewBar()
{
static datetime new_Bar;
if (new_Bar == Time[1]) return(false); //Если бар не закрыт - выход
new_Bar = Time[1];
return(true);
}
[свернуть]
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko
29.12.2014, 18:15
Аватар для olegkrg
olegkrg olegkrg вне форума Местный знаток
Регистрация: 01.08.2012 / Сообщений: 365
Поблагодарили 591 раз(а) / Репутация: 594
Вылечите больного....Всех с наступающим Новым годом!
29.12.2014, 18:33
Аватар для John174RUS
John174RUS John174RUS вне форума Прохожий
Регистрация: 29.11.2014 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
Всем привет !
у меня с советником полная печалка может кто посмотрит

он открывает ордера СЕЛЛ, даже там где должен открывать БАЙ
И еще проблемка как сделать чтоб ордер СЕЛЛ с лотом 0.02 открывался на ТЕЙК ПРОФИТЕ ордераСЕЛЛ с лотом 0.04 и только один раз,а то его вышибает СТОП ЛОССОМ и он тут же повторяет сделку???
Советник писал с индикатора TMA with Distances.mq4

Скрытый текст

//+------------------------------------------------------------------+
//| Сова TMA Probnik.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| _https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "_https://www.mql5.com"
#property version "1.00"
#property strict
#define MAGIC 1234
#define IDENT "mo_bidir"

extern double Lots =0.04;
extern double Lot =0.02;
extern double Lot2 =0.01;
extern int TakeProfit =15;
extern int StopLoss = 15;
extern int Slippage = 5;
extern string comment ="Tma bot";
extern int Megic =123;
extern string Indi ="Данные индикатора";
extern string TimeFrame ="current time frame";
extern int HalfLength =56;
extern int Price =PRICE_CLOSE;
extern double ATRMultiplier =2.0;
extern int ATRPeriod =100;
extern bool Interpolate =true;

double PRICE_HIGH2,PRICE_LOW2,SL,TP,SL1,TP1;

int last_bar=0;

int ticket;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
if(Digits==3 || Digits==5)
{
TakeProfit *=10;
StopLoss *= 10;
Slippage *= 10;
}

return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
{
PRICE_HIGH2= iCustom(Symbol(),0,"Tma",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
PRICE_LOW2 = iCustom(Symbol(),0,"Tma",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);
}

if(OrdersTotal() && CountSell()==0)

SL = NormalizeDouble(Bid+StopLoss * Point, Digits);
TP = NormalizeDouble(Ask-StopLoss * Point, Digits);

ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,Bid+StopLoss*Point,Ask-StopLoss*Point,IDENT,MAGIC,0,Red);
if(ticket>0)

if(Bid>=PRICE_HIGH2 && CountSell()==0)
{
{
SL = NormalizeDouble(Bid + StopLoss * Point, Digits);
TP = NormalizeDouble(Bid - TakeProfit * Point, Digits);

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,comment,Megic,0,Magenta);
if(ticket>0)

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
bool modify=OrderModify(ticket,OrderOpenPrice(),SL,TP,0);
}

}

if(Ask<=PRICE_LOW2 && CountBuy()==0)
{
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
TP = NormalizeDouble(Bid + StopLoss * Point, Digits);

ticket=OrderSend(Symbol(),OP_BUY,Lot2,Ask,Slippage,0,0,comment,Megic,0,Blue);
if(ticket<0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
bool modify=OrderModify(ticket,OrderOpenPrice(),SL,TP,0);
}

}

if(Ask<=PRICE_LOW2 && CountSell()>0)
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderMagicNumber()==Megic && OrderType()==OP_SELL)
bool close=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Black);
}
}
}

if(Bid>=PRICE_HIGH2 && CountBuy()>0)
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderMagicNumber()==Megic && OrderType()==OP_BUY)
bool close=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black);
}
}
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountSell()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
bool select=OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic)
{
if(OrderType()==OP_SELL)
count++;
}
}

return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountBuy()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
bool select=OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Megic)
{
if(OrderType()==OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
[свернуть]

Последний раз редактировалось NSerega; 29.12.2014 в 19:07.
Ответить

Метки
доработать эксперта, доработка индикаторов, исправить советник, программисты форекс


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 22:22. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO