самый простой мультивалютник

 

Всем привет.

Только начал учить мт5. До этого писал на мт4. Скопилось много мультивалютников которые хотел проверить под тестером мт5.

Начал изучать сорци которые нашел в комьюнити. Вообщем достаточно сложные для понимания ибо объектная модель дико отличается.

Есть ли сорци попроще желателньо мультивалютные, в котором имнимум объектных моментов, просто используются обычные приказы для откртия и закрытия ордеров? 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 

Скидывай сюда свой самый простой мультик с описанием, может кто и переделает.

Или просто OnTimer() используешь и все, вот почти и мультик.

 
Хорошо, спасибо, скоро приатачу. Я нашел парочку в кодебазе, вроде удобочитаемы. Пытасюь на тестере прогнать. Подтягиваются котировки ну очень долго, хотя делаю тест по дневным барам и по ценам октрытия. Можете посоветовать брокра у которого котироки истории подтягиваются быстро и у которого есть мт5?
 
NIkolay2000:
Хорошо, спасибо, скоро приатачу. Я нашел парочку в кодебазе, вроде удобочитаемы. Пытасюь на тестере прогнать. Подтягиваются котировки ну очень долго, хотя делаю тест по дневным барам и по ценам октрытия. Можете посоветовать брокра у которого котироки истории подтягиваются быстро и у которого есть мт5?
Самые качественная история это у метаквотов
 
мне нужно не качество а именно скорость.
 
https://www.mql5.com/ru/code/452 - вот эту штуку тестил 30 минут минимум, а потом начал ругатся что не найден индикатор который ему нужен для определения сигналов для входов
Resonance Hunter
Resonance Hunter
  • голосов: 6
  • 2011.10.14
  • Nikolay Kositsin
  • www.mql5.com
Мультивалютная экспертная система, анализирующая резонансные явления на смежных финансовых активах.
 
//+------------------------------------------------------------------+
//|                                                 simple multi.mq4 |
//|                                                               11 |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "11"
#property link      "http://www.metaquotes.net"
extern  string pair1="EURUSD";
extern string pair2="GBPCHF";
extern string pair3="USDCHF";
extern string pair4="USDJPY";
extern string pair5="USDCAD";
extern string pair6="EURJPY";
extern string pair7="AUDNZD";
extern string pair8="NZDUSD";
extern double lots1=1;
int tic,bc;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   bc=Bars;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if (bc!=Bars&&iClose(pair1,NULL,1)>iOpen(pair1,NULL,1)&&iClose(pair1,NULL,1)>iOpen(pair1,NULL,1))
   {
   tic=OrderSend(pair1, OP_BUY, lots1, 0, 3,0,0 , "", 777,0, Lime);
   tic=OrderSend(pair2, OP_BUY, lots1, 0, 3,0,0 , "", 777,0, Lime);
   tic=OrderSend(pair3, OP_BUY, lots1, 0, 3,0,0 , "", 777,0, Lime);
   tic=OrderSend(pair4, OP_BUY, lots1, 0, 3,0,0 , "", 777,0, Lime);
   tic=OrderSend(pair5, OP_BUY, lots1, 0, 3,0,0 , "", 777,0, Lime);
   tic=OrderSend(pair6, OP_BUY, lots1, 0, 3,0,0 , "", 777,0, Lime);
   tic=OrderSend(pair7, OP_BUY, lots1, 0, 3,0,0 , "", 777,0, Lime);
   tic=OrderSend(pair8, OP_BUY, lots1, 0, 3,0,0 , "", 777,0, Lime);
   
   }
   
   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

 
NIkolay2000:
Хорошо, спасибо, скоро приатачу. Я нашел парочку в кодебазе, вроде удобочитаемы. Пытасюь на тестере прогнать. Подтягиваются котировки ну очень долго, хотя делаю тест по дневным барам и по ценам октрытия. Можете посоветовать брокра у которого котироки истории подтягиваются быстро и у которого есть мт5?
Первый раз грузятся котировки по всем символам, соответственно это занимает время. В следующий раз уже не будет грузить всю историю, а только ту которой не хватает.
 


Примерно так

#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>

input  string pair1="EURUSD";
input string pair2="GBPCHF";
input string pair3="USDCHF";
input string pair4="USDJPY";
input string pair5="USDCAD";
input string pair6="EURJPY";
input string pair7="AUDNZD";
input string pair8="NZDUSD";
input double lots1=1;

int      tic,bc;
double   dLocSL = 0;
double   dLocTP = 0;
MqlRates rt[2];   // Массив значений цен для 2-х последних баров

CTrade            Exp_Trade;                    // trading object

CSymbolInfo       Exp_Symbol_Info1;              // symbol info object
CSymbolInfo       Exp_Symbol_Info2;              // symbol info object
CSymbolInfo       Exp_Symbol_Info3;              // symbol info object
CSymbolInfo       Exp_Symbol_Info4;              // symbol info object
CSymbolInfo       Exp_Symbol_Info5;              // symbol info object
CSymbolInfo       Exp_Symbol_Info6;              // symbol info object
CSymbolInfo       Exp_Symbol_Info7;              // symbol info object
CSymbolInfo       Exp_Symbol_Info8;              // symbol info object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(60);
     
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
     
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
  
   if(CopyRates(pair1,PERIOD_H1,0,2,rt)!=2) // Копируем в массив значения цен 2-х последних баров
     {
      Print("CopyRates "+pair1+" не загружена история");
     }

  
   if(rt[0].close > rt[0].open)
     {
      Exp_Trade.PositionOpen(pair1,ORDER_TYPE_BUY,lots1,Exp_Symbol_Info1.Ask(),dLocSL,dLocTP,"");
      Exp_Trade.PositionOpen(pair2,ORDER_TYPE_BUY,lots1,Exp_Symbol_Info2.Ask(),dLocSL,dLocTP,"");
      Exp_Trade.PositionOpen(pair3,ORDER_TYPE_BUY,lots1,Exp_Symbol_Info3.Ask(),dLocSL,dLocTP,"");
      Exp_Trade.PositionOpen(pair4,ORDER_TYPE_BUY,lots1,Exp_Symbol_Info4.Ask(),dLocSL,dLocTP,"");
      Exp_Trade.PositionOpen(pair5,ORDER_TYPE_BUY,lots1,Exp_Symbol_Info5.Ask(),dLocSL,dLocTP,"");
      Exp_Trade.PositionOpen(pair6,ORDER_TYPE_BUY,lots1,Exp_Symbol_Info6.Ask(),dLocSL,dLocTP,"");
      Exp_Trade.PositionOpen(pair7,ORDER_TYPE_BUY,lots1,Exp_Symbol_Info7.Ask(),dLocSL,dLocTP,"");
      Exp_Trade.PositionOpen(pair8,ORDER_TYPE_BUY,lots1,Exp_Symbol_Info8.Ask(),dLocSL,dLocTP,"");
     
     }
  
  }


 
Konstantin83:


Примерно так




благодарю, буду тестить и развивать этот код.
 

Еще в инит нужно добавить

Exp_Symbol_Info1.Name(pair1);
Exp_Symbol_Info1.Refresh();
Exp_Symbol_Info1.RefreshRates();


Exp_Symbol_Info2.Name(pair2);
Exp_Symbol_Info2.Refresh();

Exp_Symbol_Info2.RefreshRates();


......


Причина обращения: