Magic Number 배열을 만드는 방법은 무엇입니까? - 페이지 3

 
매수주문과 매도주문 을 따로 하고 싶은데 가능한가요?
 
7bit :
아이디어: 항상 같은 매직 번호를 사용하여 매직 번호를 사용하는 다른 모든 것과 호환되도록 할 수 있지만 각 거래 쌍에 고유한 번호를 주석에 포함하여 주석 문자열과 결합할 수도 있습니다. 그런 다음 동일한 마법 댓글이 있는 거래를 간단히 찾아 각 거래 쌍의 다른 거래를 찾을 수 있습니다.

댓글과 매직넘버로 주문은 어떻게 찾나요?

나는 15개의 방아쇠를 가지고 있다

TP 200 SL 300과 같은 표준을 원하지 않습니다.

각 통화 쌍 은 트리거의 통계에 따라 다른 TP와 SL을 갖습니다.

더 높은 확률의 트리거가 오면 식별하고 조치를 취하고 싶습니다.

trigger1 eur/usd 100 확률: 94%, usd/jpy 300 확률: 74% eur/jpy 200 prob.100%

트리거 1이 eur/usd 쌍 중 하나에 대해 거래된 경우 해당 트리거에 대한 쌍에 대해 더 이상 거래하지 않음

나는 여전히 trigger2 trigger3 및 (trigger1은 다른 쌍으로) 거래하고 싶습니다.

 

어때서

 int MagicNoBuy  = 12345 ;
int MagicNoSell = 67890 ;

OrderSend ( Symbol (),OP_BUY, 1 ,Ask,......,MagicNoBuy ,.,..);
OrderSend ( Symbol (),OP_SELL, 1 ,Bid,......,MagicNoSell,.,..);
 
구매 및 판매에 별도의 마법이 필요하지 않으며 OrderType()으로 쉽게 필터링할 수 있습니다.
 
7bit :
구매 및 판매에 별도의 마법이 필요하지 않으며 OrderType()으로 쉽게 필터링할 수 있습니다.


도와주셔서 감사합니다

 
7bit :
구매 및 판매에 별도의 마법이 필요하지 않으며 OrderType()으로 쉽게 필터링할 수 있습니다.
OrderSymbol()을 사용하여 통화 쌍 을 필터링할 수 있습니다.
 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
 

저는 RANGE의 매직 넘버를 사용하므로 거래에 다른 SL 방법을 사용할 수 있습니다.

예: MAGIC_NUMBER_BASE = 1234500

그런 다음 0-99의 '오프셋'을 사용하여 SL 유형별로 내 거래를 그룹화합니다. 그런 다음 다음과 같은 코드를 사용합니다.

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

내 거래를 찾기 위해 (사실 그 코드는 내 거래를 제외하는 것입니다!)

 
sxTed :

Jon 이 함수는 고유 번호를 발행합니다.

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

감사합니다, 마침내 이 스레드를 다시 방문하게 되었고 이것을 시도하고 있습니다. 나는 샘플을 이해하지 못합니다. 왜 OrderSend > 0이고 다른 OrderSend를 수행합니까? 도와주세요!

나는 시퀀스 번호가 모든 주문과 함께 증가한다는 것과 댓글이나 매직 넘버에 할당할 수 있다는 것을 깨달았습니다. 가장 좋은 점은 MT4를 다시 시작한 후에도 시스템에 남아 있다는 것입니다.

그러나 나중에 어떻게 식별하고 비교합니까?


각 주문 세트가 배치되는 방법:

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


즉, 나는 페어로 거래하고, 1과 2를 주문하고 3과 4를 주문하는 식입니다....

주문 1 - 시퀀스 #1

주문 2 - 시퀀스 #2

주문 3 - 시퀀스 #3

주문 4 - 시퀀스 #4

주문 5 - 시퀀스 #5

주문 6 - 시퀀스 #6


이제 증가하는 고유한 시퀀스 번호가 있으므로

어떻게 선택하고 비교합니까?

선택하여 비교하고 싶습니다.

1 & 2 주문, 3 & 4 주문, 5 & 6 주문, 등등...


미리 감사드립니다!

 

... 위의 답변에서 계속됨


아니면 시퀀스 번호가 증가할 때를 제어할 수 있습니까?

즉, 각 주문 세트 후에? 2 주문 후처럼.

따라서 선택하고 비교할 때 동일한 시퀀스 번호를 가진 주문만 선택할 수 있습니다.

그것을 코딩하는 방법?


감사해요!

 
orderend() 를 사용할 때 얻은 고유한 티켓 번호를 사용하지 않는 이유는 무엇입니까?

Array[][]에 저장


예시.


무역 1
TicketArray [1] [0] = Ticket0;
TicketArray [1] [1] = Ticket1;

무역 2
티켓어레이 [2] [0]
티켓어레이 [2] [1]

무역 3
티켓어레이 [3] [0]
티켓어레이 [3] [1]

... 등등