MQL5 ve MQL5 Cloud Network'te evrensel matematiksel hesaplamaların ek desteği için ne eklenmelidir? - sayfa 6

 
Renat :

Öyle bir an var ki Renat.

Ne de olsa, MT5, bir zararı durdurmanın ve bir kâr almanın ne zaman etkinleştirildiğini açıkça anlar. // bu, siparişin yorumlarından görülebilir ve platform işleminin özünden açıktır.

Bu nedenle, uygun istek (sürekli) ortaya çıkar. - böylece OnTradeTransaction'da , SL veya TP etkinleştirildiğinde ilgili bayrak görünür - SL veya TP aktivasyonu.


Ancak, gerekli bağlantı mimarisinin olmaması nedeniyle bu (teorik olarak bile) imkansızsa, o zaman platformun mimarisinin bu eyleme gönderilen sırayla bir bayrak ayarlanmasına izin vermediğini söylemek daha iyidir, bu işe yaradı - SL veya TP .

Her ne kadar sizin için "hiçbir şey imkansız değil" gibi bir kelime yok. Sen meta alıntılarsın :)

 

Başka bir deyişle, işlem yapısına bakıldığında https://www.mql5.com/en/docs/constants/structures/mqltradetransaction

TRADE_ACTION alanını eklerdim

 struct MqlTradeTransaction
  {
   ulong                          deal;             // Тикет сделки
   ulong                          order;             // Тикет ордера
   string                         symbol;           // Имя торгового инструмента
   ENUM_TRADE_TRANSACTION_TYPE    type;             // Тип торговой транзакции
   ENUM_TRADE_ACTION               action ,            // Тип события, по какой причине выставлен ордер
   ENUM_ORDER_TYPE                order_type;       // Тип ордера
   ENUM_ORDER_STATE               order_state;       // Состояние ордера
   ENUM_DEAL_TYPE                 deal_type;         // Тип сделки
   ENUM_ORDER_TYPE_TIME           type_time;         // Тип ордера по времени действия
   datetime                       time_expiration;   // Срок истечения ордера
   double                         price;             // Цена 
   double                         price_trigger;     // Цена срабатывания стоп-лимитного ордера
   double                         price_sl;         // Уровень Stop Loss
   double                         price_tp;         // Уровень Take Profit
   double                         volume;           // Объем в лотах
  };
sırasıyla sipariş verme nedenleri
Çalışılan SL
TP çalıştı
Stopout ile bir pozdan çıkış

peki ve diğerleri, varsa // belki de ihtiyacın olan tek şey bu
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торговой транзакции - Документация по MQL5
 
sergeev :

Öyle bir an var ki Renat.

Ne de olsa, MT5, bir zararı durdurmanın ve bir kâr almanın ne zaman etkinleştirildiğini açıkça anlar . // bu, siparişin yorumlarından görülebilir ve platform işleminin özünden açıktır.

İşin aslı, gerçekte anlamadığı ve anlamaması gerektiğidir.

Her şey yürütme kuyruklarından geçer, siparişler basit AL / SATIŞ olarak ve likidite sağlayıcılarına ve borsalara açılan ağ geçitleri aracılığıyla bölünür. Gerçekte nasıl gerçekleştirileceği (kısmi dahil) bilinmemektedir. Ve aniden dur bayraklarını garanti ettiğimizi ilan edersek, yarın papaklas haklı bir öfkeyle bizi "işe yaramadı!" diye suçlayacak.

 
Renat :

İşin aslı, gerçekte anlamadığı ve anlamaması gerektiğidir.

Her şey yürütme kuyruklarından geçer, siparişler basit AL / SATIŞ olarak ve likidite sağlayıcılarına ve borsalara açılan ağ geçitleri aracılığıyla bölünür.

Evet bölünür.

Ancak sonuçta, bu bölme işlemi oldukça spesifiktir - zararı durdur / kârı al'ı etkinleştirin. Ayrıca, bu eylemler istemci terminali tarafından değil , MT sunucusunun kendisi tarafından işlenir .

Duraklar MT dışında etkinleştirilse bile, sonuç hala MT5 için gerçek bir sipariş veya olaydır.

MT5 sunucusunun derinliklerine inemeyeceğimi anlıyorum, ancak yine de emin olun. Siparişin verildiği esasa göre eylem hakkında bildirimde bulunmak mümkün müdür?

Sunucu (veya ağ geçidi) zararı durdur/karı al/durdur vb. etkinleştirdiğinden, her durumda, yanıtta bir sipariş verilmiş demektir. // arama emri olmadan hiçbir şey olmaz!

Ve ilgili bayrağı bu siparişe koyun - bu siparişi veya olayı yerleştirme nedenleri .

 
Belki de özellikle TradeTransaction için yeni bir yapı getirilmeliydi?
 
pronych :
Belki de özellikle TradeTransaction için yeni bir yapı getirilmeliydi?

çok daha yeni :) çok eksiksiz.

sadece iki alan eksik

- konum tanımlayıcısı
- sipariş verme nedeni

 
sergeev :

Evet bölünür.

Ancak sonuçta, bu bölme işlemi oldukça spesifiktir - zararı durdur / kârı al'ı etkinleştirin. Ayrıca, bu eylemler istemci terminali tarafından değil , MT sunucusunun kendisi tarafından işlenir .

Cevap basit - %100 bayrak ayarı garantisi yoktur.

Çünkü tetiklemenin birçok kaynağı ve başlatıcısı vardır ve bu kesinlikle tek ticaret sunucusu değildir.

 
Renat :

Cevap basit - %100 bayrak ayarı garantisi yoktur.

Çünkü tetiklemenin birçok kaynağı ve başlatıcısı vardır ve bu kesinlikle tek ticaret sunucusu değildir.

Zararı durdur aktivasyonunun birkaç ticaret sunucusu tarafından işlenmesi mümkün mü?

Bana bunun için bir MT sunucusu yeterli gibi geldi.

Aktivasyon için bir sipariş oluşturulur ve oluşturulduğu platforma bildirilir. // harici ağ geçidi
Ardından doldurma geliyor. ve anlaşmalar var.
Siparişin yerine getirilemeyeceği ve bakiyenin kaldırılacağı açıktır.
ancak bu emri oluştururken, işleme bir bayrak ekleyebilirsiniz - bu, zararı durdurma emridir.
Durakları doldurarak esnafın geçip geçmeyeceği bizim için önemli değil. ve hiç doldurup doldurmayacağı. ana olayın kendisi, bunun bir zararı durdur emri olmasıdır.

Ya da stoploss ağ geçidi tarafından işlenirse MT'de emirsiz işlemler olabilir mi? Bir pozisyon emri olmadan alım satımlarla kapatılabilir mi?

Ama sen daha iyi biliyorsun, tartışmayacağım. bu çok ince bir nokta.
 

papaklass :

Ve dedikoduyu kim yapıyor?

kesinlikle sen

hala trollemeye çalışıyor anlam?

doğru davranın.

 
Renat :

Bizim açımızdan, terminalin katılımı olmaksızın acenteler arasında bağımsız bir iletişim kurmayı düşünüyoruz. Örneğin, aracılardan biri ilk verileri oluşturabilir ve geri kalanına gönderebilir. yayın yapmak.

Terminalin katılımı olmadan, bu iyidir.

Bu "aracılardan biri" için verileri kim oluşturacak? Bir komut dosyası veya gösterge bunu yapabilecek mi?

Aracılar arasındaki iletişime neden ihtiyaç duyulur, mümkünse dar görüşlüleri aydınlatın.

Bazı işlevler eksik olsa da, matematiksel hesaplamaların olanaklarını kontrol etmek için zaten bir komut dosyası yazdım)

 // все данные расчетов агентов складываются в массив структур
struct MqlCloud
  {
   enum STATUS {wait,ready,error,free};
   STATUS status; // статус выполнения задачи - выполнена, выполняется, ошибка выполнения
   double input_data[]; // массив входных данных
   double out_data[];   // массив выходных данных
  };
  
long id= AccountInfoInteger ( ACCOUNT_LOGIN );  

double in_data[ 100 ];
MqlCloud result[ 10000 ];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   CloudInit(id, "myprog.ex5" );   // id - это кто будет платить за Cloud, myprog.ex5 - программа которая будет выполнять расчеты
   CloudData( "file.dat" );       // file.dat - файл с неизменными данными для расчета
   for ( uint i= 0 ; i< 10000 ; i++)
      {
       //
       // формируем массив входных данных для расчета
           for ( int n= 0 ; n< ArraySize (in_data); n++) in_data[n]= MathRand ()/ SHORT_MAX ; 
       //
       CloudCalculat(i,in_data); // здесь i - номер задачи, input_data - массив переменных входных данных
      }
   // выводим максимальный результат
   double max_result= 0.0 ; 
   for ( uint i= 0 ; i< 10000 ; i++)
      {
       if (result[i].status!=ready)
         {
          i--;
           Sleep ( 1000 );
           continue ;
         }
       max_result= MathMax (max_result,result[i].out_data[ 0 ]);
      }
   Print ( "Max result = " , ArrayMaximum (result[ 0 ].out_data));
  }
  
//+------------------------------------------------------------------+
void OnCloudPass( uint num_mission)
  {
   // анализируем результат выполнения задачи по ее номеру, если нужно
   double s=result[num_mission].out_data[ 0 ];
  }
//+------------------------------------------------------------------+

void CloudInit( long ID, string programm_name) {}
void CloudData( string file_dat) {}
void CloudCalculat( uint num_mission, double & idata[]) {}