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

 
Alım ve satım emirleri için ayrı bir numara istiyorum bu mümkün mü?
 
7bit :
fikir: sihirli sayıları kullanan diğer her şeyle uyumlu hale getirmek için her zaman olduğu gibi aynı sihirli sayıyı kullanabilir, ancak yoruma her işlem çifti için benzersiz bir sayı ekleyerek yorum dizesiyle birleştirebilirsiniz. Ardından, aynı büyü ve yoruma sahip bir ticaret arayarak her bir ticaret çiftinin diğer ticaretini bulabilirsiniz.

Yorum ve sihirli numaraya göre bir siparişi nasıl bulabilirim?

15 tetikleyicim var

standart istemiyorum TP 200 SL 300 diyelim

Tetikleyicinin istatistiklerine bağlı olarak her döviz çiftinin farklı bir TP ve SL'si olacaktır

daha yüksek bir olasılık tetikleyici gelirse, onu belirlemek ve harekete geçmek istiyorum

tetik1 eur/usd 100 prob: %94, usd/jpy 300 prob:74% eur/jpy 200 prob.100%

tetik 1, eur/usd çiftlerinden biri için işlem görürse, o tetikleyici için o çift için artık işlem yapılmaz

hala trigger2 trigger3 ve (trigger1 sadece farklı bir çift) ile takas yapmak istiyorum

 

neden olmasın

 int MagicNoBuy  = 12345 ;
int MagicNoSell = 67890 ;

OrderSend ( Symbol (),OP_BUY, 1 ,Ask,......,MagicNoBuy ,.,..);
OrderSend ( Symbol (),OP_SELL, 1 ,Bid,......,MagicNoSell,.,..);
 
alış ve satış için ayrı bir sihire ihtiyacınız yok, bunları OrderType() ile kolayca filtreleyebilirsiniz.
 
7bit :
alış ve satış için ayrı bir sihire ihtiyacınız yok, bunları OrderType() ile kolayca filtreleyebilirsiniz.


Yardımlarınız için teşekkür ederim

 
7bit :
alış ve satış için ayrı bir sihire ihtiyacınız yok, bunları OrderType() ile kolayca filtreleyebilirsiniz.
ve OrderSymbol() ile para birimi çiftlerini filtreleyebilirsiniz.
 for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--) if (
     OrderSelect (pos, SELECT_BY_POS)             // Only my orders w/
&&  OrderMagicNumber() == Magic.Number           // my magic number
&&  OrderSymbol()      == Symbol () ){           // and period and symbol
 

Bir dizi sihirli sayı kullanıyorum, böylece işlemler için farklı SL yöntemleri kullanabilirim.

örneğin MAGIC_NUMBER_BASE = 1234500

& ardından işlemlerimi SL tipine göre gruplandırmak için 0-99'luk 'offset'i kullanın. Sonra gibi kod kullanırım

       if (OrderMagicNumber() < MY_MAGIC_LO || OrderMagicNumber() > MY_MAGIC_HI)

işlemlerimi bulmak için (aslında bu kod işlemlerimi HARİÇ TUTMAK içindir!)

 
sxTed :

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);
}

Teşekkürler, sonunda bu konuyu tekrar ziyaret ettim ve bunu deniyorum. Örneği anlamıyorum. Neden OrderSend > 0, sonra başka bir OrderSend gerçekleştirin? Lütfen yardım et!

Sıra Numarasının her siparişte artacağını ve bunu yoruma veya sihirli sayıya atayabileceğimi fark ettim ki bu harika. En iyi yanı, MT4'ü yeniden başlattıktan sonra bile sistemde kalmaları.

Ancak, bunları daha sonra nasıl tanımlayabilir ve karşılaştırabilirim?


Her bir sipariş grubunun nasıl yerleştirildiği:

 string sNumber=DoubleToStr(SequenceNumber(),0);
int ticket= OrderSend ( Symbol (),OP_BUY,LotSize,MarketInfo( Symbol 1,MODE_ASK), 3 , 0 , 0 , sNumber , 12345 , 0 , Green )
&   ticket= OrderSend ( Symbol (),OP_SELL,LotSize,MarketInfo( Symbol 2,MODE_ASK), 3 , 0 , 0 , sNumber , 12345 , 0 ,Red);


yani çift olarak işlem yapıyorum, Sipariş 1 ve 2, ardından Sipariş 3 ve 4, vb....

Sıra 1 - Sıra #1

2. Sıra - 2. Sıra

Sıra 3 - Sıra #3

4. Sıra - Sıra #4

Sıra 5 - Sıra #5

Sipariş 6 - Sıra #6


Artık benzersiz sıra numaralarına sahip olduklarına göre,

Bunları nasıl seçer ve karşılaştırırım?

seçip karşılaştırmak istiyorum

1 ve 2'yi sıralayın, ardından 3 ve 4'ü sıralayın, ardından 5 ve 6'yı sıralayın, vb.


Şimdiden teşekkürler!

 

... Yukarıdaki yanıtın devamı


Veya sıra numarasının ne zaman artacağını kontrol edebilir miyim?

yani her sipariş setinden sonra? 2 sipariş sonrası gibi.

Böylece, seçerken ve karşılaştırırken, aynı sıra numarasına sahip siparişleri seçebiliyordum .

Bunu nasıl kodlamalı?


Teşekkürler!

 
Orderend() kullandığınızda aldığınız benzersiz bilet numarasını neden kullanmıyorsunuz?

Bunları Bir Dizide Kaydet[][]


misal.


Ticaret 1
TicketArray [1] [0] = Ticket0;
TicketArray [1] [1] = Ticket1;

Ticaret 2
TicketArray [2] [0]
TicketArray [2] [1]

Ticaret 3
TicketArray [3] [0]
TicketArray [3] [1]

... Ve benzeri