[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 88

 

확인. 우리는 그렇지 않을 수 있습니다. 우리 둘 다 지식이 충분하지 않은 것 같습니다. 질문 작성자가 StopLoss를 변경하는 방법을 물었습니다. 나는 그가 깊이를 탐구하지 않을 것이라고 생각합니다.

그러나 여전히 OrderSend 함수 후에 할당을 시도합니다.

 
MaxZ :

OrderSend 함수에서 이 숫자 "12"는 무엇입니까? :(

그리고 당신은 주문 선택에 대해 저를 오해했습니다 ... 다음과 같아야합니다.

여기요!

정말 감사합니다! 답변을 위해!!!

아마도 내 자신을 올바르게 표현하지 않았을 것입니다. 아이디어는 다음과 같습니다.

판매 거래는 1.4545..에서 이루어집니다. 가격은 추세에 반합니다 - 1.4585.. 그리고 여기 - 보류 주문 은 1.4565에서 이루어져야 합니다.

내 코드가 제대로 작동하지 않습니다:

 void otlogka ( int order)
{  
   int a, k= OrdersTotal ();
   for (a=k- 1 ; a>= 0 ; a--){
         if ( OrderSelect (a, SELECT_BY_POS, MODE_TRADES)){
             if ( OrderType ()==OP_BUY){
               if (Bid* Point - OrderOpenPrice ()>40)
               RefreshRates ();
               if (k> 1 ){
                  {
                     order= OrderSend ( Symbol (),OP_SELLLIMIT, 0.02 , OrderOpenPrice ()+20* Point , 1 ,SL, 0 , "Otlogka" ,mn, 5 , 0 );
                  }}}}}
    
           if ( OrderType ()==OP_SELL){
               if (Ask* Point - OrderOpenPrice ()<40)
                   RefreshRates ();
                   if (k> 1 ){
                {
                  order= OrderSend ( Symbol (),OP_BUYLIMIT, 0.02 , OrderOpenPrice ()-20* Point , 1 ,SL, 0 , "Otlogka" ,mn, 5 , 0 );
                }}}

}

도와주세요!!!

 
FOReignEXchange :

OrderSend 기능이 실행되는 동안 가격이 변경될 수 있다고 말했습니다. 따라서 이미 변경된 경우 이후에 할당해야 합니다.

다음과 같이 될 수 있습니다.

 if (Opn_B)
{
   Alert ( "Попытка открыть ордер Buy..." );
   RefreshRates ();
   Ticket = OrderSend (Symb, OP_BUY , Lots, Ask, Slippage, 0 , 0 , NULL , MAGIC, 0 , Blue );
   if (Ticket > 0 )
   {
       if ( OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES))
       if ( OrderCloseTime () == 0 )
      {
         Alert ( "Открыт ордер Buy " , Ticket, "." );
         Opn_B = False;
         SL = OrderOpenPrice ()-StopLoss* Point ;
         TP = OrderOpenPrice ()+TakeProfit* Point ;
         
         Alert ( "Попытка модифицировать ордер Buy " , Ticket, "..." );
         if ( OrderModify (Ticket, OrderOpenPrice (), SL, TP, 0 , Blue ))
             Alert ( "Ордер Buy " , Ticket, " модифицирован." );
         else
             Alert ( "Ошибка: " , GetLastError ());
      }
       else
         Alert ( "Да ну нафиг!?" );
   }
   else
       Alert ( "Ошибка: " , GetLastError ());
}
각 접근 방식에는 장단점이 있습니다.
 
smartemiy :

여기요!

정말 감사합니다! 답변을 위해!!!

아마도 내 자신을 올바르게 표현하지 않았을 것입니다. 아이디어는 다음과 같습니다.

판매 거래는 1.4545..에서 이루어집니다. 가격은 추세에 반합니다 - 1.4585.. 그리고 여기 - 보류 주문은 1.4565에서 이루어져야 합니다.

내 코드가 올바르게 작동하지 않습니다:

도와주세요!!!

Bid와 Ask는 포인트를 곱할 필요가 없습니다. 순식간에 눈에 들어왔다...

조건은 다르게 구성해야 합니다.

 if (Bid- OrderOpenPrice () > 40 * Point )
{...}
if ( OrderOpenPrice ()-Ask > 40 * Point )
{...}

그리고 SL이 어떤 종류의 변수인지 나에게 분명하지 않습니다. 어떤 가치가 있습니까? 어디에서 계산되나요?

하지만 이것은

           if ( OrderType ()==OP_SELL){
               if (Ask* Point - OrderOpenPrice ()<40)
                   RefreshRates ();
                   if (k> 1 ){
                {
                  order= OrderSend ( Symbol (),OP_BUYLIMIT, 0.02 , OrderOpenPrice ()-20* Point , 1 ,SL, 0 , "Otlogka" ,mn, 5 , 0 );
                }}}

루프로 묶어야 합니다... 주문이 반복되는 루프는 BUY 및 SELL 주문에 공통되어야 합니다.

프로그래밍에 뭔가 문제가 있습니다. 교과서를 다시 읽고 간단한 Expert Advisor, 주문 회계 및 거래 기능 작성에 대한 예제를 분석하는 것이 좋습니다.


또한 실수: RefreshRates()는 미리 정의된 변수 또는 시계열 배열을 사용하려는 순간 이전에 설정해야 하며 이후에는 설정해야 합니다.

 
MaxZ :

Bid와 Ask는 포인트를 곱할 필요가 없습니다. 순식간에 눈에 들어왔다...

조건은 다르게 구성해야 합니다.


괄호가 있어야 하지 않겠습니까?

 if ((Bid- OrderOpenPrice ()) > 40 * Point )
{...}
if ((Ask- OrderOpenPrice ()) < 40 * Point )
 
MaxZ :

Bid와 Ask는 포인트를 곱할 필요가 없습니다. 순식간에 눈에 들어왔다...

조건은 다르게 구성해야 합니다.

그리고 SL이 어떤 종류의 변수인지 나에게 분명하지 않습니다. 어떤 가치가 있습니까? 어디에서 계산되나요?

하지만 이것은

루프해야합니다 ...

프로그래밍에 뭔가 문제가 있습니다. 교과서를 다시 읽고 간단한 Expert Advisor, 주문 회계 및 거래 기능 작성에 대한 예제를 분석하는 것이 좋습니다.

이것은 일반적인 손절매 = SL입니다.
 
FOReignEXchange :


괄호가 있어야 하지 않겠습니까?

필요하지 않습니다. 그리고 괄호 없이 작동합니다! :)

누가 더 편안합니다. 필적! :디

 
smartemiy :
이것은 일반적인 손절매 = SL입니다.
그리고 어떻게 계산되나요? 그리고 BUY와 SELL이 공통적인 이유는 무엇입니까?

스마트 :

판매 거래는 1.4545..에서 이루어집니다. 가격은 추세에 반합니다 - 1.4585.. 그리고 여기 - 보류 주문은 1.4565에서 이루어져야 합니다.

그건 그렇고, 추세에 반대되는 경우 조건은 그 반대여야 합니다.

 if (Bid- OrderOpenPrice () < -40 * Point )
{...}
if ( OrderOpenPrice ()-Ask < -40 * Point )
{...}

일반적으로 표현에서

ProfitBUY  = Bid- OrderOpenPrice ();
ProfitSELL = OrderOpenPrice ()-Ask;

핍의 해당 거래에서 이익을 찾을 수 있습니다. 이익이 음수이면 이미 손실입니다. 여기에서 손실이 40핍 이상인지 확인 하고 보류 중인 주문 을 해야 합니다.

 
MaxZ :
그리고 어떻게 계산되나요? 그리고 BUY와 SELL이 공통적인 이유는 무엇입니까?

손절매 는 이제 그다지 중요하지 않습니다..

코드가 이론상으로 작동할까요?? 귀하의 수정 사항에 따라

 
smartemiy :

손절매는 이제 중요하지 않습니다..

코드가 이론상으로 작동할까요?? 귀하의 수정 사항에 따라

효과가 있을 수 있지만 맞는지...

다시 귀하의 작업에서 :

스마트미 :

"매도 거래는 1.4545..에서 이루어집니다. 가격은 추세와 반대입니다 - 1.4585.. 그리고 여기 - 보류 주문은 1.4565에서 이루어져야 합니다."

SELL 주문이 열렸습니다. OrderOpenPrice()는 1.4545를 반환합니다.

가격은 추세와 반대입니다. 질문 = 1.4585. 상태:

 if ( OrderOpenPrice ()-Ask <= -40 * Point )

작동합니다(기호 "<=").

다음 코드를 분석해 보겠습니다.

order= OrderSend ( Symbol (),OP_BUYLIMIT, 0.02 , OrderOpenPrice ()-20* Point , 1 ,SL, 0 , "Otlogka" ,mn, 5 , 0 );

보류 중인 BUYLIMIT 주문 은 1.4545-20*Point = 1.4525... 그러나 1.4565가 되어야 합니다.


그러나 그 전에 모든 코드를 다시 작성해 보십시오. 오타도 많고, 무슨 글을 쓰는지 이해가 안가는 부분도 있습니다.