Sihirli Sayı dizisi nasıl oluşturulur? - sayfa 2

 
7bit :
lütfen EA'nızın ne yapacağını kabaca açıklayın. ayrı ayrı yönetilmesi gereken kaç farklı sipariş türü vardır. Aslında neyi başarmaya çalıştığınızı biliyorsak, belki de sorununuz hiç sorun değildir.


Sipariş verdiğimde sihirli sayı gibi benzersiz bir etikete sahip olmak istiyorum. Sabit sipariş sayısı yok.

Her yeni sipariş, yeni bir grup olarak ele alınmalı ve ayrı ayrı yönetilmelidir.

 int ticket=OrderSend(Symbol(),OP_BUY,LotSize,MarketInfo(Symbol(),MODE_ASK),3,0,0,"My EA",12345,0,Green)
&   ticket=OrderSend(Symbol(),OP_BUY,LotSize,MarketInfo(Symbol(),MODE_ASK),3,0,0,"My EA",12345,0,Green);

12345'i düzeltmek yerine, sihirli sayının 1, ardından sonraki sıra 2, sonra 3, sonra 4 gibi her yeni sıra ile artmasını istiyorum.

Ayrıca OrderSend döngü yapmayan bir fonksiyondadır. Böyle bir şey nasıl yapılır?

Bazen dinamik bir dizi gibi[i] ???

Kapatmaya çalıştığımda, OrdersTotal() ve her benzersiz sihirli sayı dizisinden [i] ??? Ve koşul sağlandığında aynı gruptakileri kapatır.

 
7bit :
lütfen böyle saçma sapan şeyler önermeyin. Sihirli sayı, siparişin kendisinde zaten bulunan değerleri depolamak için değildir.

Lütfen bana siparişin tam olarak neresinde olduğunu gösterebilir misiniz Dönem (); ?
 
qjol :
Lütfen bana siparişin tam olarak neresinde olduğunu gösterebilir misiniz Dönem (); ?

Öyle değil.

IMHO, eğer bununla diğer uzmanları kullanmayı planlamıyorsanız ve onu vermeyi planlamıyorsanız, o zaman Sihirli Numarayı istediğiniz her şeyi saklamak için kullanabilirsiniz ...

 
qjol :

Lütfen bana siparişin tam olarak neresinde olduğunu gösterebilir misiniz Dönem (); ?
OrderPeriod() nedir???
 
gordon :

Öyle değil.

IMHO, eğer bununla diğer uzmanları kullanmayı planlamıyorsanız ve onu vermeyi planlamıyorsanız, o zaman Sihirli Numarayı istediğiniz her şeyi saklamak için kullanabilirsiniz ...


Belki artan sihirli sayıyı saklamak için bir işlev

Her OrderSend'den önce, bir sonraki sihirli sayının atanacağını bulmak için işlevi çalıştırın.

Böyle bir işlevin nasıl yapılacağı hakkında bir fikriniz var mı?

 
johnnybegoode :

Böyle bir işlevin nasıl yapılacağı hakkında bir fikriniz var mı?

Bu makalede nispeten karmaşık bir örnek var -> http://mqlmagazine.com/mql-programming/object-Orient-trading-an-oop-approach-to-trading/ .
 
gordon :
Bu makalede nispeten karmaşık bir örnek var -> http://mqlmagazine.com/mql-programming/object-Orient-trading-an-oop-approach-to-trading/ .


Teşekkürler!
Bu gerçekten karmaşık, daha kolay bir yöntem var mı?
 
johnnybegoode :


Sihirli sayının 1, ardından sonraki sipariş 2, sonra 3, sonra 4 gibi her yeni siparişte artmasını istiyorum.

Ancak bu, aynı benzersiz numaraya sahip iki siparişinizin asla olmayacağını garanti etmez mi? "Gruplarınız" her grupta yalnızca bir ticaretten mi oluşacak? Seni doğru anladım mı?

Sorunun tek çözümü olarak gördüğünüz şeye dayanarak ne yapmak istediğinizi (MN dizisi vb.) açıkladınız ama yine de sorunun kendisini açıklamadınız, ticaret sisteminin hangi emirlerin kapatılacağına nasıl karar vermesi gerektiğini ve hangileri tutacak. Bunu manuel olarak ticaret yapmak isteseydi nasıl çalışırdı, belki de konsepti açıklayacak, bunun ne tür bir sistem olduğunu netleştirecek kadar benzer , halka açık bir ticaret sistemi var mı?

Örneğin "genellikle" (çok sık) siparişin kendisinden belirlenebilen belirli gereksinimleri karşılayan emirleri kapatmaya çalışır, örneğin "en eski emir", "x pip kâr", "başabaş", "x pip zarar" , vb. ve sihirli sayı yalnızca kendi işlemlerini ve tamamen farklı EA'lardan gelen işlemleri anlatmak için kullanılır.

Bir kişi , üzerinde önceden açılmış emirler bulunan ve kendilerine yazılı kimlikler *olmadan* grafiğe bakılırsa, bu sistemle manuel olarak işlem yapabilir mi (ticarete devam edebilir mi?)

Sisteminizde, yalnızca siparişin kapatılması gerekip gerekmediğine karar vermek için tek bir siparişten tek bir kimliğe ihtiyacınız var? Ve her sipariş zaten benzersizse neden bilet numarasının kendisini kullanmıyorsunuz?

Bu konuda daha fazla bilgi sahibi olmak, geri adım atıp her şeye farklı bir açıdan bakmayı ve belki de çok daha zarif ve kolay bir çözüm bulmayı sağlayacaktır.

 
7bit :

Ancak bu, aynı benzersiz numaraya sahip iki siparişinizin asla olmayacağını garanti etmez mi? "Gruplarınız" her grupta yalnızca bir ticaretten mi oluşacak? Seni doğru anladım mı?

Sorunun tek çözümü olarak gördüğünüz şeye dayanarak ne yapmak istediğinizi (MN dizisi vb.) açıkladınız ama yine de sorunun kendisini açıklamadınız, ticaret sisteminin hangi emirlerin kapatılacağına nasıl karar vermesi gerektiğini ve hangileri tutacak. Bunu manuel olarak ticaret yapmak isteseydi nasıl çalışırdı, belki de konsepti açıklayacak, bunun ne tür bir sistem olduğunu netleştirecek kadar benzer , halka açık bir ticaret sistemi var mı?

Örneğin "genellikle" (çok sık) siparişin kendisinden belirlenebilen belirli gereksinimleri karşılayan emirleri kapatmaya çalışır, örneğin "en eski emir", "x pip kâr", "başabaş", "x pip zarar" , vb. ve sihirli sayı yalnızca kendi işlemlerini ve tamamen farklı EA'lardan gelen işlemleri anlatmak için kullanılır.

Bir kişi , üzerinde önceden açılmış emirler bulunan ve kendilerine yazılı kimlikler *olmadan* grafiğe bakılırsa, bu sistemle manuel olarak işlem yapabilir mi (ticarete devam edebilir mi?)

Sisteminizde, yalnızca siparişin kapatılması gerekip gerekmediğine karar vermek için tek bir siparişten tek bir kimliğe ihtiyacınız var? Ve her sipariş zaten benzersizse neden bilet numarasının kendisini kullanmıyorsunuz?

Bu konuda daha fazla bilgi sahibi olmak, geri adım atıp her şeye farklı bir açıdan bakmayı ve belki de çok daha zarif ve kolay bir çözüm bulmayı sağlayacaktır.


"Fakat bu, aynı benzersiz numaraya sahip iki siparişinizin asla olmayacağını garanti etmez mi?"

Evet, benzersiz numara ile 2 veya daha fazla siparişiniz olabilir. Grup siparişlerinden sonra artırmayı yapın

 

Jon bu işlev benzersiz sayılar verir

 //+------------------------------------------------------------------+
//| Function..: SequenceNumber                                       |
//| Purpose...: Generate a sequential number.                        |
//| Returns...: dSeqNum - next sequence number.                      |
//| Notes.....: MT4 keeps the value of the global variable at the    |
//|             client terminal for 4 weeks since the last access.   |                        
//|             Use SequenceNumber() to generate a unique identity   |
//|             for each order (and passed via parameter <magic>     |
//|             number, or converted to a string and passed via the  |
//|             parameter <comment> to the OrderSend() function) as  |
//|             the trade servers of some brokers do modify the      |
//|             ticket number of a pending order when it changes to  |
//|             a market order.                                      |
//|             The same sequence number could, for example, be used |
//|             to identify the two positions of a straddle order.   |
//|             ******************************************************
//|             * If the expert has to close partial lots, then MT4  *
//|             * retains in the new order the contents of the       *
//|             * OrderMagicNumber() but loses OrderComment().       *
//|             ******************************************************
//| Sample....: string sNumber=DoubleToStr(SequenceNumber(),0);      |
//|             if(OrderSend("EURUSD",OP_BUY,1,Ask,3,Ask-25*Point,   |
//|                          Ask+25*Point,sNumber,16384,0,Green) > 0)|
//|                OrderSend("EURUSD",OP_BUY,1,Ask,3,Ask-25*Point,   |
//|                          Ask+65*Point,sNumber,16384,0,Green);    |
//+------------------------------------------------------------------+
double SequenceNumber() {
   double dSeqNum= 1 , d;
   string sName= "SequenceNumber" ;

   while ( GlobalVariableCheck ( "Semaphore" )) d+= 0 ;
   GlobalVariableSet ( "Semaphore" , 1 );
   if ( GlobalVariableCheck (sName)) dSeqNum= GlobalVariableGet (sName)+ 1 ;
   GlobalVariableSet (sName,dSeqNum);
   GlobalVariableDel ( "Semaphore" );
   return (dSeqNum);
}
Neden: