+1
Если вас интересует идея моего советника, то она следующая.
МА растет и стоха ниже уровня перепроданности — покупаем. МА убывает и стох выше уровня перекупленности — продаем.
avatar

AM2

  • 21 апреля 2011, 18:01
0
Если не успеваем вовремя выставить ордер и цена проходит сколько то пунктов, можно выставлять отложку или нет?
avatar

AM2

  • 18 апреля 2011, 17:16
+2
Сделал для себя пример расчета размера контракта. Если что неправильно поправьте пожалуйста.

Расчет контракта:

Исходные данные:
Размер контракта: 100000.
Риск: 4%.
Размер депозита: 30000$.

Сокращения:

ФРО – Финансовый результат операции.
ЦО – Цена открытия сделки.
ЦЗ – Цена закрытия сделки.
ТО – Торговый объем.
ТК – Текущий курс.

Расчет для EURUSD:

Риск на сделку Buy:

Стоп 100 пунктов.
30000 * 4% = 1200$.
ТО = ФРО: (ЦО – ЦЗ).
ТО = 1200: (1.4205 — 1.4105) = 120000.
120000 = 1.2 лота.

Расчет для AUDUSD:

Риск на сделку Buy:

Стоп 70 пунктов:
ТО = 1200: (1.0566 — 1.04996) = 171428.
171428 = 1.7 лота.

Расчет для USDJPY:

Риск на сделку Sell:

Стоп 40 пунктов:
ТО = 1200 * TK(JPY): (83.51 — 83.11) = 250530.
250530 = 2.5 лота.
avatar

AM2

  • 17 апреля 2011, 12:57
+1
Я всегда готов учиться. Как говорил великий Ленин: «Учиться учиться и еще раз учиться!»
avatar

AM2

  • 15 апреля 2011, 07:45
+2
Дмитрий, подскажите пожалуйста что можно почитать чтобы научиться понимать процессы происходящие на валютном рынке?
avatar

AM2

  • 14 апреля 2011, 09:11
0
Дмитрий, как научиться самому создавать подобные торговые модели?
Как выбирать направление торговли, рассчитывать уровни стопов?
Делается все это только на основе ТА или ФА тоже используется?
avatar

AM2

  • 12 апреля 2011, 23:35
+1
Как торгует система в тестере стратегий МТ4 на опте и форварде? Можно посмотреть график?
avatar

AM2

  • 6 апреля 2011, 16:10
0
Скоро подобное будет готово для АЛОР… тружусь…


А для MT4 будет?
avatar

AM2

  • 3 апреля 2011, 19:20
+1
Может кто то доработает…

//+------------------------------------------------------------------+
//|                          NFP.mq4                                 |
//+------------------------------------------------------------------+

extern string TimeSet      = "16:25";  //Время в которое происходит выставление стоп ордеров.
extern int    Delta        = 100,      //Выше или ниже екстремумов дня
              SL           = 0,        //Стоплосс в пунктах
              TP           = 150,      //Тейкпрофит в пунктах
              risk         = 0,        //Если 0 то по фиксированному лоту
              NoLoss       = 0,        //Если 0 то нет установки безубытка
              trailing     = 0;        //Если 0 то нет трейлинга
extern double Lot          = 1;        //используется только при risk = 0
extern bool   OpenStop     = true;     //Выставлять стоп ордера при открытом ордере
extern color  color_BAR    = DarkBlue; //цвет инфо
//--------------------------------------------------------------------
double        MaxPrice,MinPrice;
int           STOPLEVEL,magic=123321,tip,TimeBarBay,TimeBarSell,LastDay;
//--------------------------------------------------------------------
int init()
{
   if (TP < STOPLEVEL) TP = STOPLEVEL;
   if (NoLoss   < STOPLEVEL && NoLoss   != 0) NoLoss   = STOPLEVEL;
   if (trailing < STOPLEVEL && trailing != 0) trailing = STOPLEVEL;
   Comment("\nУстановленные параметры Nonfarm Payrolls "+"\n"+
      "\nTimeSet   "   , TimeSet,           "\n",
      "Delta       " , Delta,             "\n",
      "SL           ", SL,                "\n",
      "TP          " , TP,                "\n",
      "Lot          ", DoubleToStr(Lot,2),"\n",
      "risk         ", risk,              "\n",
      "NoLoss    "   , NoLoss,            "\n",
      "trailing     ", trailing);
   if (TimeSet=="00:00") LastDay=1;
}
//--------------------------------------------------------------------
int start()
{
   //-----------------------------------------------------------------
   int bay,sel,error;
   bool BUY=false,SEL=false;
   for (int i=0; i<OrdersTotal(); i++)
   {  if (OrderSelect(i, SELECT_BY_POS)==true)
      {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
         tip=OrderType();
         if (tip==0) BUY = true;//есть позиция на покупку
         if (tip==1) SEL = true;//есть позиция на продажу
         if (tip==4) bay++;//есть ордер на покупку
         if (tip==5) sel++;//есть ордер на продажу
      }   
   }
   if ((BUY||SEL)&&(bay!=0||sel!=0)) DelAllStop();          //если есть открытый ордер удаляем стоп ордера
   if ( BUY||SEL) 
   {
      if (NoLoss!=0) No_Loss(NoLoss);
      if (trailing!=0) TrailingStop(trailing);
      return;                                               //если есть открытый ордер тралим или в бу
   }
   
   int expiration=CurTime()+(23-TimeHour(CurTime()))*3600+(60-TimeMinute(CurTime()))*60;  //время закрытия стоп ордера
   double TrPr,StLo;
   if (risk!=0) Lot = LOT(); 
   if (bay<1&&Hour()>13&&DayOfWeek()==5&&Day()<=7)//выставляем ордер на покупку если первая пятница месяца и нет ордера на покупку
   {
      MaxPrice=High[1]+NormalizeDouble(Delta*Point,Digits);
      if (Ask+STOPLEVEL*Point>MaxPrice) MaxPrice = NormalizeDouble(Ask+STOPLEVEL*Point,Digits);
      if (TP!=0) TrPr = NormalizeDouble(MaxPrice + TP * Point,Digits);                 
      if (SL!=0) StLo = NormalizeDouble(MaxPrice - SL * Point,Digits);                 
      error=OrderSend(Symbol(),OP_BUYSTOP ,Lot,MaxPrice,3,StLo,TrPr,"BUYSTOP BLD",magic,expiration,Blue);
      if (error==-1) Print("Error BUYSTOP ",GetLastError(),"   ",Symbol(),"   Lot ",Lot,"   Price ",MaxPrice,"   SL ",0,"   TP ",TrPr,"   expiration ",expiration);
      else TimeBarBay=TimeDay(CurTime());
   }
   if (sel<1&&Hour()>13&&(DayOfWeek()==5 && Day()<=7))
   {
      MinPrice=Low[1]-NormalizeDouble(Delta*Point,Digits);
      if (Bid-STOPLEVEL*Point<MinPrice) MinPrice = NormalizeDouble(Bid-STOPLEVEL*Point,Digits);
      if (TP!=0) TrPr = NormalizeDouble(MinPrice - TP * Point,Digits);                 
      if (SL!=0) StLo = NormalizeDouble(MinPrice + SL * Point,Digits);   
      error=OrderSend(Symbol(),OP_SELLSTOP,Lot,MinPrice,3,StLo,TrPr,"SELLSTOP BLD",magic,expiration,Red );
      if (error==-1) Print("Error SELLSTOP ",GetLastError(),"   ",Symbol(),"   Lot ",Lot,"   Price ",MinPrice,"   SL ",0,"   TP ",TrPr,"   expiration ",expiration);
      else TimeBarSell=TimeDay(CurTime());
   }

   return(0);
}
//--------------------------------------------------------------------
void DelAllStop()
{
   int tip;
   for (int i=0; i<OrdersTotal(); i++)
   {                                               
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {
         if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
         tip=OrderType();
         if (tip==4||tip==5) OrderDelete(OrderTicket());
      }   
   }
}
//--------------------------------------------------------------------
void TrailingStop(int trailing)
{
   double StLo,OSL,OOP;
   int tip;
   bool error=true;
   for (int i=0; i<OrdersTotal(); i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         tip = OrderType();
         if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
         {
            OSL   = NormalizeDouble(OrderStopLoss(),Digits);
            OOP   = NormalizeDouble(OrderOpenPrice(),Digits);
            if (tip==0)        
            {  
               StLo = NormalizeDouble(Bid - trailing*Point,Digits);
               if (StLo < OOP) continue;
               if (StLo > OSL)
                  error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White);

            }                                         
            if (tip==1)    
            {                                         
               StLo = NormalizeDouble(Ask + trailing*Point,Digits);           
               if (StLo > OOP) continue;
               if (StLo < OSL || OSL==0 )
                  error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White);
            } 
            if (!error) Alert("Error TrailingStop ",GetLastError(),"   ",Symbol(),"   SL ",StLo);
         }
      }
   }
}
//------------------------------------------------------------------+
double LOT()
{
   double MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
   double LOT = AccountFreeMargin()*risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/15;
   if (LOT>MarketInfo(Symbol(),MODE_MAXLOT)) LOT = MarketInfo(Symbol(),MODE_MAXLOT);
   if (LOT<MINLOT) LOT = MINLOT;
   if (MINLOT<0.1) LOT = NormalizeDouble(LOT,2); else LOT = NormalizeDouble(LOT,1);
   return(LOT);
}
//------------------------------------------------------------------+
void No_Loss(int NoLoss)
{
   double OOP,OSL;
   int tip;
   bool error=true;
   color col;
   for (int i=0; i<OrdersTotal(); i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         tip = OrderType();
         if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()!=magic)
         {
            OOP = NormalizeDouble(OrderOpenPrice(),Digits); 
            OSL = NormalizeDouble(OrderStopLoss(),Digits); 
            if (tip==0)
            {  
               if ((Bid-OOP)/Point>=NoLoss && OOP > OSL) 
                  error=OrderModify(OrderTicket(),OOP,OOP,OrderTakeProfit(),0,White);
            }                                         
            if (tip==1)
            {                                         
               if ((OOP-Ask)/Point>=NoLoss && (OOP < OSL || OSL ==0))
                  error=OrderModify(OrderTicket(),OOP,OOP,OrderTakeProfit(),0,White);
             } 
            if (!error) Alert("Error No_Loss ",GetLastError(),"   ",Symbol());
         }
      }
   }
}
//------------------------------------------------------------------+
avatar

AM2

  • 3 апреля 2011, 18:15
0
Сырой еще совсем советник да и торгует также нестабильно как на графике выше.
avatar

AM2

  • 3 апреля 2011, 17:25
+1
Вот так вот отторговал советник недавние пэйроллсы оптимизированный на участке 2000.01.01-2009.12.30.



Но с этими параметрами тоже не все так однозначно. М.б. у кого то есть еще стратегия торговли на NFP?
avatar

AM2

  • 3 апреля 2011, 15:31
+2
Результаты торговли более продвинутой версии советника уже более соответствующего данной стратегии.



Результат 2009.06.05.



Результат 2009.08.07.



Результат 2009.09.04.



А вот в октябре результат уже другой был…

P.S. Стратегия имеет место быть но особенно обольщаться не стоит. Также желательно более тщательно подбирать параметры торговли.
avatar

AM2

  • 3 апреля 2011, 11:53
+1
Советник торгует только на пробой и в первую пятницу каждого месяца. Чтобы торговал также на развороте и когда нужно во вторую пятницу, нужно дорабатывать.
avatar

AM2

  • 2 апреля 2011, 17:02
+5
Заинтересовался стратегией. Набросал советник:
forum.mql4.com/ru/40009#455711
Можете потестить.
avatar

AM2

  • 2 апреля 2011, 00:41
+3
Вот здесь поправьте:

//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())<=2) CheckForOpen();
  }
//----
//+------------------------------------------------------------------+

Так будет открывать не больше 3-х позиций.
avatar

AM2

  • 11 марта 2011, 17:28
+1
Пожалуйста. Я только за.
avatar

AM2

  • 17 февраля 2011, 18:33
0
Со входами еще не совсем понятно.
М.б. у кого еще идеи есть по этому поводу?
avatar

AM2

  • 4 февраля 2011, 14:46
+3


Георгию спасибо за идею!

EURUSD
M5
Лот 1
Все тики

Результат за 2010 год.
avatar

AM2

  • 2 февраля 2011, 22:04
Закрытая группа  Комментарий в закрытой группе / Закрытые архивы  
:: комментарий доступен только участникам закрытой группы "Закрытые архивы" - Читать ::
avatar

AM2

  • 12 января 2011, 15:26
Закрытая группа  Комментарий в закрытой группе / Закрытые архивы  
:: комментарий доступен только участникам закрытой группы "Закрытые архивы" - Читать ::
avatar

AM2

  • 11 января 2011, 21:45