Как торговать EURUSD с минимальным риском и максимальной доходностью?

Сегодня меня осенила идея торговли парой евродоллар на месячном таймфрейме.
В прошлом своем блоге я использовал 2 машки а теперь решил ограничиться одной.
Посмотрев на свой родной МТ4 я там не нашел возможности тестировать на MN1.



Тогда я решил обратиться к МТ5. Но и там не не удалось полностью проверить свою идею, т.к. не получил полной глубины истории.
Но даже то что удалось реализовать, наводит на серьезные размышления о торговле на крупных таймфреймах.



Тестирование проводилось 1 лотом начиная с 10000$. При реинвестировании прибыль можете смело умножить на 2.
Использовался стандартный эксперт Moving Average с торговлей постоянным лотом.

П.С. Если хранить средства у брокера, который дает определенный процент годовых на неипользуемую в торговле часть депозита, то можно добавить к своим доходам еще некоторую сумму.
  • +9
  • Просмотров: 8184
  • 8 августа 2015, 13:12
  • AM2
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

  Предыдущая запись в моем блоге
Вот как надо было торговать USDRUB
Следующая запись в моем блоге  
Как установить советник на графики Renko
31 июля 2015
16 августа 2015

Комментарии (20)

+
+2
avatar

  8  Paguk Сообщений: 328 - суровый трейдер

  • 8 августа 2015, 13:16
+
+1
Ну что сказать? Красотища.:) 
avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 8 августа 2015, 13:18
+
0
*good* 

Но даже то что удалось реализовать, наводит на серьезные размышления о торговле на крупных таймфреймах.

Что ж, вполне по науке.
Нобелевская премия по экономике (2013) вручена ученым, которые доказали возможность долгосрочного анализа рынков
avatar

  45  Bishop Сообщений: 5710 - АЛЬФАХАМЕЦ-Машковод

  • 8 августа 2015, 13:23
+
0
В чем тогда протестировать целиком стратегию на MN1 с 1990-го где то?
Welth Lab, MetaStock, Thinkorswim?
avatar

  34  AM2 Автор Сообщений: 15826 - Андрей

  • 8 августа 2015, 19:56
+
0
А почему получилось только с 2007-го, если у тебя на графике есть история с 2000-го?
Или нужна история для ТФ поменьше?
avatar

  45  Bishop Сообщений: 5710 - АЛЬФАХАМЕЦ-Машковод

  • 8 августа 2015, 20:02
+
0
Не знаю почему так? Кидал скрипт подгрузки истории, бесполезно. На недельках тестит с 2000-го.
avatar

  34  AM2 Автор Сообщений: 15826 - Андрей

  • 8 августа 2015, 20:13
+
0
Через настройки графики выстави макс. баров истории побольше и загрузи всю историю котировок — там будет по-самое нехочу. Можно поудалять сначала старые истории — иногда они мешают.
avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 8 августа 2015, 20:22
+
+1
Не помогло в альпаришном терминале. В МТ5 от MQ есть история по EURUSD с 1971 года! :D 

avatar

  34  AM2 Автор Сообщений: 15826 - Андрей

  • 8 августа 2015, 21:26
+
0
Ничоси! Покупочки!
Походу я знаю, какое название надо дать стратегии — «Идеальный инвестор»
avatar

  45  Bishop Сообщений: 5710 - АЛЬФАХАМЕЦ-Машковод

  • 8 августа 2015, 21:32
+
0
О способностях метаквотов всё закривоопить я уже отзывался.
А вообще: — «Если гора не идёт к Магомету, то Магомет идёт к горе»…
avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 8 августа 2015, 21:35
+
0
Кстати, своп там как поживает на такой стратегии, когда сделка может держаться 4-5 лет? *think* 
avatar

  45  Bishop Сообщений: 5710 - АЛЬФАХАМЕЦ-Машковод

  • 8 августа 2015, 21:39
+
0
Ну ты же сам мне расписал все подводные камни этой идеи. Достаточно профессионально.
avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 8 августа 2015, 21:45
+
0
Я не помню при каких обстоятельствах это было *???* 
Но тут у автора советник под рукой, может в цифрах вклад свопа получится увидеть.
avatar

  45  Bishop Сообщений: 5710 - АЛЬФАХАМЕЦ-Машковод

  • 8 августа 2015, 21:52
+
0
И на Бишопа бывает проруха:
anatoly74.opentraders.ru/26721.html
avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 8 августа 2015, 22:06
+
0
И на Бишопа бывает проруха:
anatoly74.opentraders.ru/26721.html

Понял. Но там про хедж речь. А мне интересно посмотреть, как своп отразится на многолетней инвесторской позиции. Можно и самостоятельно прикинуть, конечно. Но думал, что может АМ2 выкатит статистику *stesnitelno* 
avatar

  45  Bishop Сообщений: 5710 - АЛЬФАХАМЕЦ-Машковод

  • 8 августа 2015, 22:23
+
0
Слово «хедж» для меня непонятно, впрочем как и «керри-трейд», я когда описывал, то и имел ввиду без этого всего. Возможно из-за моих особенностей неточно описывать тараканов и был неправильно понят.
avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 8 августа 2015, 22:32
+
0
В некоторых случаях можно даже не открывать сделку у брокера.

Допустим у нас есть дорогой доллар и дешевый евро. Долларов у нас 10000. Курс 1.0000.
Покупаем 10000 евро за 10000 долларов. Ждем когда курс будет 1.5000 т.е. дешевый доллар и дорогой евро.
На 10000 евро покупаем 15000 долларов. И далее по кругу.
avatar

  34  AM2 Автор Сообщений: 15826 - Андрей

  • 8 августа 2015, 22:20
+
0
Красиво. Но только если относительно друг друга. И если фантиков полно.
avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 8 августа 2015, 22:27
+
+1
может АМ2 выкатит статистику



//+------------------------------------------------------------------+
//|                                              Moving Averages.mq5 |
//|                   Copyright 2009-2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2009-2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#include <Trade\Trade.mqh>

input double MaximumRisk        = 0.02;    // Maximum Risk in percentage
input double DecreaseFactor     = 3;       // Descrease factor
input int    MovingPeriod       = 12;      // Moving Average period
input int    MovingShift        = 6;       // Moving Average shift
//---
int   ExtHandle=0;
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double TradeSizeOptimized(void)
  {
   double price=0.0;
   double margin=0.0;
//--- select lot size
   if(!SymbolInfoDouble(_Symbol,SYMBOL_ASK,price))
      return(0.0);
   if(!OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1.0,price,margin))
      return(0.0);
   if(margin<=0.0)
      return(0.0);

   double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_FREEMARGIN)*MaximumRisk/margin,2);
//--- calculate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      //--- select history for access
      HistorySelect(0,TimeCurrent());
      //---
      int    orders=HistoryDealsTotal();  // total history deals
      int    losses=0;                    // number of losses orders without a break

      for(int i=orders-1;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0)
           {
            Print("HistoryDealGetTicket failed, no trade history");
            break;
           }
         //--- check symbol
         if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol)
            continue;
         //--- check profit
         double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
         if(profit>0.0)
            break;
         if(profit<0.0)
            losses++;
        }
      //---
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//--- normalize and check limits
   double stepvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   lot=stepvol*NormalizeDouble(lot/stepvol,0);

   double minvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   if(lot<minvol)
      lot=minvol;

   double maxvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   if(lot>maxvol)
      lot=maxvol;
//--- return trading volume
   return(lot);
  }
//+------------------------------------------------------------------+
//| Check for open position conditions                               |
//+------------------------------------------------------------------+
void CheckForOpen(void)
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1)
      return;
//--- get current Moving Average 
   double   ma[1];
   if(CopyBuffer(ExtHandle,0,0,1,ma)!=1)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;
     }
//--- check signals
   ENUM_ORDER_TYPE signal=WRONG_VALUE;

   if(rt[0].open>ma[0] && rt[0].close<ma[0])
      signal=ORDER_TYPE_SELL;    // sell conditions
   else
     {
      if(rt[0].open<ma[0] && rt[0].close>ma[0])
         signal=ORDER_TYPE_BUY;  // buy conditions
     }
//--- additional checking
   if(signal!=WRONG_VALUE)
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
         if(Bars(_Symbol,_Period)>100)
           {
            CTrade trade;
            trade.PositionOpen(_Symbol,signal,TradeSizeOptimized(),
                               SymbolInfoDouble(_Symbol,signal==ORDER_TYPE_SELL ? SYMBOL_BID:SYMBOL_ASK),
                               0,0);
           }
//---
  }
//+------------------------------------------------------------------+
//| Check for close position conditions                              |
//+------------------------------------------------------------------+
void CheckForClose(void)
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1)
      return;
//--- get current Moving Average 
   double   ma[1];
   if(CopyBuffer(ExtHandle,0,0,1,ma)!=1)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;
     }
//--- positions already selected before
   bool signal=false;
   long type=PositionGetInteger(POSITION_TYPE);

   if(type==(long)POSITION_TYPE_BUY && rt[0].open>ma[0] && rt[0].close<ma[0])
      signal=true;
   if(type==(long)POSITION_TYPE_SELL && rt[0].open<ma[0] && rt[0].close>ma[0])
      signal=true;
//--- additional checking
   if(signal)
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
         if(Bars(_Symbol,_Period)>100)
           {
            CTrade trade;
            trade.PositionClose(_Symbol,3);
           }
//---
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//---
   ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
   if(ExtHandle==INVALID_HANDLE)
     {
      printf("Error creating MA indicator");
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(void)
  {
//---
   double sw=0;
   if(PositionSelect(_Symbol))
     {
      sw=PositionGetDouble(POSITION_SWAP);
      CheckForClose();
     }
   else
      CheckForOpen();

   Comment("\n Swap: ",sw);
//---
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Автор Сообщений: 15826 - Андрей

  • 8 августа 2015, 23:15
+
+2
Советник с подсчетом свопа по позиции отдельно и всего накопленного за историю сделок. Сейчас есть возможность тестировать как постоянным лотом так и с риском на депо.
www.opentraders.ru/downloads/829/

avatar

  34  AM2 Автор Сообщений: 15826 - Андрей

  • 9 августа 2015, 11:03

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари