yardıma ihtiyacım var

 

Sorun şu
Pratik olarak dili anlamıyorum, birkaç VP için siparişlerin açılmasını otomatikleştirmek gerekli hale geldi, çok basit bir kod çizdim (dosyayı ekliyorum), ancak bir şekilde sakar olduğu ortaya çıktı,
Plana göre 6 kanal açmalı ama sadece 3 kanal açmalı ama bazen 6 kanal açmalı ama sonra yine olması gerektiği gibi çalışmayı bırakıyor (bence bu fiyattaki ondalık basamak sayısından kaynaklanıyor olabilir) , çünkü JPY'nin olmadığı blokta her şey yolunda gidiyor.
Lütfen bu sorunu çözmeme yardım edin.
Ve yine de, zor değilse, bana nasıl reçete yazacağımı söyleyin, böylece sadece Alış veya Satış işlemlerinin açılışını değiştirebilirsiniz.

dosya: TEHLİKELİ DOSYA SİLİNDİ

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Информация об инструменте - Состояние окружения - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Sergey Korsunov :

Sorun şu
Pratik olarak dili anlamıyorum, birkaç VP için siparişlerin açılmasını otomatikleştirmek gerekli hale geldi, çok basit bir kod çizdim (dosyayı ekliyorum), ancak bir şekilde sakar olduğu ortaya çıktı,
Plana göre 6 kanal açmalı ama sadece 3 kanal açmalı ama bazen 6 kanal açmalı ama sonra yine olması gerektiği gibi çalışmıyor (sanırım bu fiyattaki ondalık basamak sayısından kaynaklanıyor olabilir) , çünkü JPY'nin olmadığı blokta her şey yolunda gidiyor.
Lütfen bu sorunu çözmeme yardım edin.
Ve yine de, zor değilse, bana nasıl reçete yazacağımı söyleyin, böylece sadece Alış veya Satış işlemlerinin açılışını değiştirebilirsiniz.

dosya: TEHLİKELİ DOSYA SİLİNDİ

Dosya düğmesi kullanılarak eklenmelidir Dosya eki .

 
TAMAM
Dosyalar:
Test_3.mq4  7 kb
 
Sergey Korsunov :

Sorun şu
Pratik olarak dili anlamıyorum, birkaç VP için siparişlerin açılmasını otomatikleştirmek gerekli hale geldi, çok basit bir kod çizdim (dosyayı ekliyorum), ancak bir şekilde sakar olduğu ortaya çıktı,
Plana göre 6 kanal açmalı ama sadece 3 kanal açmalı ama bazen 6 kanal açmalı ama sonra yine olması gerektiği gibi çalışmıyor (sanırım bu fiyattaki ondalık basamak sayısından kaynaklanıyor olabilir) , çünkü JPY'nin olmadığı blokta her şey yolunda gidiyor.
Lütfen bu sorunu çözmeme yardım edin.
Ve yine de, zor değilse, bana nasıl reçete yazacağımı söyleyin, böylece sadece Alış veya Satış işlemlerinin açılışını değiştirebilirsiniz.

Bir siparişin açılmasını engelleyen birkaç neden vardır. İlk tikte 3 siparişin açıldığını varsayalım.

Programın en başındaki bir sonraki tikte if(OrdersTotal() >= OrderCount) return; dönüş olacak çünkü sipariş sayısı , = 1 olan OrderCount'tan büyüktür.

Programın geri kalanı yoksayılacaktır.

Bu satırlara bakılırsa:

 //|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        " https://www.mql5.com "

Program MetaQuotes Software Corp. tarafından geliştirilmiştir. Tavsiye için onlarla iletişime geçin!

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
a007 # :

Bir siparişin açılmasını engelleyen birkaç neden vardır. İlk tikte 3 siparişin açıldığını varsayalım

Programın en başındaki bir sonraki tikte if(OrdersTotal() >= OrderCount) return; dönüş olacak çünkü sipariş sayısı , = 1 olan OrderCount'tan büyüktür.

Programın geri kalanı yoksayılacaktır.

Bu satırlara bakılırsa:

Program MetaQuotes Software Corp. tarafından geliştirilmiştir. Tavsiye için onlarla iletişime geçin!

ekstra siparişlerin açıldığı anlamına mı geliyor?

 
Fast235 # :

fazladan siparişlerin açıldığı anlamına mı geliyor?

hayır, aksine, 6 farklı döviz çiftine ihtiyacınız var, ancak sadece 3 tane açılıyor

ve bu arada, yen ile VP'nin olmadığı yerde, 6'nın tümü hem ana hem de çaprazları açar, yen ile VP'nin olduğu yerde, sadece 3
böyle bir bela

 
Sergey Korsunov # :

hayır, aksine, 6 farklı döviz çiftine ihtiyacınız var, ancak sadece 3 tane açılıyor

en basiti, her siparişi açtıktan sonra Sleep() koymaktır, terminalin numarayı güncellemek için zamanı yoktur (görünüşe göre performans uğruna)

 
Fast235 # :

en basiti, her siparişi açtıktan sonra Sleep() koymaktır, terminalin numarayı güncellemek için zamanı yoktur.

dilini gerçekten anlamıyorum
kodu tamamen netteki örneklere yazdı
Koduma Sleep() eklemeye yardım et

 
Sergey Korsunov # :

dilini gerçekten anlamıyorum
kodu tamamen netteki örneklere yazdı
Koduma Sleep() eklemeye yardım et

OrderSend'den sonra ve Sleep'i (50) koyun;

50'nin 100-200'e yükselmesine yardımcı olmazsa

 
Fast235 # :

OrderSend'den sonra ve Sleep'i (50) koyun;

50'nin 100-200'e yükselmesine yardımcı olmazsa

Yardım etmedi ((

 
Sergey Korsunov # :

Yardım etmedi ((

Bunu deneyin - Daha kısa ve daha kesin. Bunu kendi başınıza çözerseniz, programlamada lider bir figür olacaksınız. İmleci kelimeye getirin ve F1'e basın

 //+------------------------------------------------------------------+
//|                                                       Test 3.mq4 |
//+------------------------------------------------------------------+
#property strict

extern double Lot   = 0.01 ;
extern int     Slip  = 3 ;
extern int     Magic = 777 ;

string name[ 10 ]={ "AUDJPY" , "CHFJPY" , "CADJPY" , "AUDCAD" , "AUDCHF" , "CADCHF" };
int     cnt[ 6 ];

void OnTick ()
{
   ArrayInitialize (cnt, 0 ); // Обнуление счетчиков

   // Подсчет ордеров по каждому торговому инструменту
   for ( int n= OrdersTotal ()- 1 ; n>= 0 ; n--)
   {
     if (! OrderSelect (n,SELECT_BY_POS)) continue ;
     for ( int k= 0 ; k< 6 ; k++) if (OrderSymbol()==name[k]) cnt[k]++;
   }

   // Открытие ордеров по каждому торговому инструменту
   for ( int k= 0 ; k< 6 ; k++) if (!cnt[k]) int ticket = OrderSend (name[k],OP_BUY, Lot, MarketInfo(name[k],MODE_ASK), Slip, 0 , 0 , "" , Magic);
}