Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 944

 
eflaer :

Merhaba, lütfen danışmanın örneğin 10 döviz çiftinde kurulu olup olmadığını söyleyin,

Açabileceği maksimum çift sayısını programlı olarak ayarlaması mümkün mü?

Yani, danışman 10 farklı çift tablosundaysa ve ayarlar maksimum çift sayısının 5 olduğunu gösteriyorsa.

Ve danışman sadece ilk 5 çift üzerinde çalışıyor ve kalan 5 çift yok sayılıyor mu?

Bu mümkün mü?

Kod .mq biçimindeyse, yapabilirsiniz. .ex ile karıştırılmamalıdır

 

Hepinize iyi günler
Böyle bir soru vardı, durumu netleştirmede biraz yardımcı olmanızı rica ediyorum.

Izgara robotu, başlatıldığında, ORDER_TYPE_BUY_LIMIT (ayrıca en üste ORDER_TYPE_BUY_STOP) bir sınır emirleri ızgarası yerleştirir. Izgara adımı 1, 0,5, hacim 1 lot alır. Sorun şu ki, bir kez uzun pozisyon almaya başladım (10 aldım, alım 10,5 oldu), almıyorum; İkinci kez özlüyorum (9'da aldım, 9.5'te aldım), hacim zaten 2 lot. Sonra fiyat girmeye başlar ve tüm hacim 9.5'te alınır!!!

Siparişler yapı tarafından verilir

       MqlTradeRequest request_={ 0 };
      request_.action= TRADE_ACTION_PENDING ;         // установка отложенного ордера 
      request_.magic=order_magic;                   // ORDER_MAGIC 
      request_.symbol=pair;                       // инструмент 
      request_.volume=v_b;                           // объем в 0.1 лот 
      request_.tp=pr_ent_tp;                                 // Take Profit 
       //--- сформируем тип ордера 
      request_.type= ORDER_TYPE_BUY_LIMIT ;                 // тип ордера 
       //---сформируем цену для отложенного ордера 
      request_.price=pr_ent;   // цена для открытия 
       //--- отправим торговый приказ 
       MqlTradeResult result_={ 0 };
      m_Trade. OrderSend (request_,result_);

Ve herkesin kendi teikasıyla teika yapmasına ihtiyacım var. 10'da giriş, 10.5 fiyatını bekliyor
Giriş 9, fiyat 9.5. Ve ilk alımdaki tüm hacim değil.

Yapıyla ilgili bir şey yapmam gerekiyor mu?

 
ISL :

Hepinize iyi günler
Böyle bir soru vardı, durumu netleştirmede biraz yardımcı olmanızı rica ediyorum.

Izgara robotu, başlatıldığında, ORDER_TYPE_BUY_LIMIT (ayrıca en üste ORDER_TYPE_BUY_STOP) bir sınır emirleri ızgarası yerleştirir. Izgara adımı 1, 0,5, hacim 1 lot alır. Sorun şu ki, bir kez uzun pozisyon almaya başladım (10 aldım, alım 10,5 oldu), almıyorum; İkinci kez özlüyorum (9'da aldım, 9,5'te aldım), hacim zaten 2 lot. Sonra fiyat girmeye başlar ve tüm hacim 9.5'te alınır!!!

Siparişler yapı tarafından verilir

Ve herkesin kendi teikasıyla teika yapmasına ihtiyacım var. 10'da giriş, 10.5 fiyatını bekliyor
Giriş 9, fiyat 9.5. Ve ilk alımdaki tüm cilt değil.

Yapıyla ilgili bir şey yapmam gerekiyor mu?

"Netleştirme" değil, "Hedge" hesap türünü kullanın

 
Bunu değiştirmek için yeniden MT yapmanız ve Hedge kullan kutusunu işaretlemeniz gerekir. Veya mevcut olanı değiştirebilir miyim?
 
ISL :
Bunu değiştirmek için yeniden MT yapmanız ve Hedge kullan kutusunu işaretlemeniz gerekir. Veya mevcut olanı değiştirebilir miyim?

Tekrar kontrol et...

 
Teşekkür ederim!
 
Yine aynı soruyla, Netting hesabı için böyle bir alma sistemi uygulayan var mı? Belki forumda bunu soran vardır?
 
ISL :
Yine aynı soruyla, Netting hesabı için böyle bir alma sistemi uygulayan var mı? Belki forumda bunu soran vardır?

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Kütüphaneler: Sanal

fxsaber , 2018.11.15 17:16

Netleştirmede, bir pozisyonun her zaman sadece bir TP'si vardır. Bu nedenle, özellikle, şebekedeki her siparişin kendi TP'sine sahip olduğu şebeke TS, istendiği gibi çalışmayacaktır.

Aşağıda nasıl çalıştığına dair bir örnek var

 // Пример Netting с поддержкой множества однонаправленных позиций (у каждой могут быть свои Magic, SL/TP, Comment, OpenTime и т.д.).
// Запустите этот пример на Netting-счете в Тестере с влюченной Визуализацией.

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define VIRTUAL_LIMITS_TP_SLIPPAGE // Лимитники и TP исполняются по первой цене акцепта - положительные проскальзывания
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577
#include <fxsaber\Virtual\Sync.mqh>     // Синхронизатор

#define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )

input int iAmount = 5 ;   // Количество ордеров в сетке
input int iOffset = 120 ; // На каком расстоянии (в пипсах) ставить ордера сетки
input int iTP = 120 ;     // TakeProfit каждого ордера сетки

// Выставляем один раз сетку из Amount ордеров на Offset-расстоянии друг от друга с заданным TP.
void System( const int Amount, const int Offset, const int TP )
{
   static bool FirstRun = true ;
  
   if (FirstRun)  
  {
     for ( int i = 1 ; i <= Amount; i++)
    {
       const double PriceOpen = Ask - i * Offset * _Point ;
       const double PriceTP = PriceOpen + TP * _Point ;
      
       OrderSend ( _Symbol , OP_BUYLIMIT , 1 , PriceOpen, 0 , 0 , PriceTP, ( string )i); // Выставляем каждый ордер сетки
    }
    
    FirstRun = false ;
  }
}

void OnTick ()
{  
   static const bool Init = VIRTUAL::Select(VIRTUAL::Create()); // Система будет работать в этом виртуальном окружении
   static const bool IsVisual = MQLInfoInteger ( MQL_VISUAL_MODE );
   static bool FirstRun = true ;

  VIRTUAL::NewTick();             // Добавили тик в виртуальное торговое окружение
  System(iAmount, iOffset, iTP); // Запустили ТС на выбранном торговом окружении (виртуальное)
  
  SYNC::Positions<ISTIME>(); // Синхронизировли реальное торговое окружение с виртуальным

   if (IsVisual)
     Comment (VIRTUAL::ToString( true )); // Вывели на чарт состояние виртуального торгового окружения (true - вместе с историей торгов)
}


Fikir basit. Aracı sanal olanda başlattık, ancak gerçek olanda sadece senkronize ediyoruz. Aracın kaynak kodunun değiştirilmesine gerek yoktur (örnekteki Sistem işlevi).

 

Tünaydın. Terminali kapatana kadar sayılan dizilerin uzanacağı bir mqh dosyası yapmak ve yalnızca büyük bir zaman boşluğu olduğunda (benim durumumda 3600) indirmek istedim. Ancak, göstergeyi derlersem, mqh dosyasının da tüm dizileri sıfırladığı ortaya çıkıyor. İndikatör ile her şeyi yapıp derleyebilmem için nasıl yapabilirim, ancak mqh dosyası terminal kapanana kadar sıfırlanmaz mı?

 class CMyTicks
  {
protected :
   int                countTicks;

public :
   datetime           m_TickTime[];
   datetime           m_FirstTickTime;
   //+------------------------------------------------------------------+
   //| Constructor.                                                     |
   //+------------------------------------------------------------------+      
   void CMyTicks()
     {
      countTicks= 0 ;
     }
   //+------------------------------------------------------------------+  
   void CollectTicks( int m_getticks= 1000 )
     {
       MqlTick            items[];
       int received= CopyTicks ( _Symbol ,items, COPY_TICKS_ALL , 0 ,m_getticks);
      
      ...
      m_FirstTickTime=items[ 0 ].time;
     }
  };
//+------------------------------------------------------------------+
 #include <Test_Array_Include.mqh>
CMyTicks  Test;
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   ReloadAsk();
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
int       getticks= 100000 ;
datetime firstticktime= 0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ReloadAsk()
  {
   MqlTick            items[];
   int received= CopyTicks ( _Symbol ,items, COPY_TICKS_ALL , 0 ,getticks);
   firstticktime=items[ 0 ].time;

   if (( int )firstticktime>( int )Test.m_FirstTickTime+ 3600 )
     {
      Test.CollectTicks(getticks);
       int ArrSize= ArraySize (Test.m_TickTime);
       Print ( " Should not apear after compilation. ArrSize: " ,ArrSize); // 
     }
  }
//+------------------------------------------------------------------+
 
Hesabı bir ay bloke etmenizi rica ediyorum.