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

 

에이빅 :

시간이 좀 견딜 수 없는 마지막 2개 구매 위치만 닫기 위해 닫기 구매 위치 블록 을 다시 만들지만 작동하지 않습니다 . 제안할 수 있습니까? ~처럼 블록을 변경?

 //+------------------------------------------------------------------+
//|                                                         0000.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link       ""
void Close_2buy()
   {
   bool      result;
   int       Count= 2 ,Ticket=-1,error;
   datetime time= 0 ;
   while (Count> 0 )
      {
       for ( int f= OrdersTotal ()- 1 ; f>= 0 ; f--) // 
         {
         OrderSelect (f, SELECT_BY_POS);
         if (OrderSymbol()== Symbol () &&(OrderMagicNumber()==magic ) 
         && (OrderType() == OP_BUY )) 
            {
             if (OrderOpenTime()>time)
               {
               time=OrderOpenTime();Ticket=OrderTicket();
            }
         }
      }
       if ( OrderSelect (Ticket,SELECT_BY_TICKET)==True);
         {
         result=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble (Bid, Digits ), 0 , CLR_NONE );
         if (result!=TRUE){error= GetLastError (); Print ( "LastError = " , error);}
      }
      else{error= GetLastError (); Print ( "LastError = " , error);} 
      Ticket=-1;time= 0 ;Count--;
   }
   return ;
} 
 
ametist444 :

안녕하세요!

이 창을 얻으려면 어떤 파일을 다운로드해야 하고 mt4에서 어디에 설치해야 하는지 알려주십시오.

테스트된 기기의 다양한 시간대에 대한 시뮬레이션 페이지에서 수행 방법을 이해하지 못했습니다.

일일 4시간 및 시간별 차트 3개만 보고 싶습니다.

제발 도와주세요, 저녁 내내 아무 일도 일어나지 않았습니다!!!



(시각적) 유형의 창은 시각적 모드에서 Expert Advisor를 테스트할 때 열립니다.


 
peshihod :

어떤 종류의 손절매?

제가 표현을 잘못했을수도 있어요 :(

주문을 여는 알고리즘이 있습니다.

마지막 주문을 닫는 옵션의 경우 다음 주문이 다른 방향으로 열려야 합니다(각각 조건이 나타날 때).

모든 것이 작동하지만, 예를 들어 매도를 통해 손절매 로 마감하고 이 방향으로 매도를 위한 조건이 있으면 개설이 계속됩니다. 그리고 매수 조건을 기다려야 합니다.

즉, 마지막 마감 주문이 시작 주문과 일치하지 않도록 확인해야 합니다(매수-매도-매도-팔기 교대로). 작동 중이거나 신호를 기다리는 주문은 하나만 있습니다.

나는 그것이 OrdersHistoryTotal()을 통해 필요할 가능성이 높다는 것을 이해하지만 작동하는 Expert Advisor에서는 어떻게 보일 수 있습니까?

고맙습니다.

 
delf :

주문을 여는 알고리즘이 있습니다.

마지막 주문을 닫는 옵션의 경우 다음 주문이 다른 방향으로 열려야 합니다(각각 조건이 나타날 때).

즉, 마지막 마감 주문이 시작 주문과 일치하지 않도록 확인해야 합니다(매수-매도-매도-팔기 교대로). 작동 중이거나 신호를 기다리는 주문은 하나만 있습니다.

교대는 항상 그리고 어떤 경우에도 발생하며 작업에는 항상 하나의 명령만 있습니까?

그러면 조건에 주문 수에 대한 제어를 추가하는 것이 더 쉽습니다.

 if ( OrdersTotal ()== 0 )
{
	if (OldOrder==OrderBuy)
		{
		...
		}
	else
		{
		...
		}
}
 
rigonich :


문제는 다음과 같습니다. 이 함수에 OrderSelect()가 없기 때문에 주문 루프의 어딘가에서 사용되는 것 같습니다. 이 주기가 0차부터 마지막 1차까지 검색을 구성하는 경우 첫 번째 주문을 수정한 후 또는 예를 들어 이 틱에서 주문이 마감된 경우 다음에 OrderSelect() 함수가 호출될 때 주문 주문이 변경되고 기능은 이미 수정된 주문을 수정하도록 선택할 수 있습니다. 따라서 주문의 손절매 값이 OrderModify() 함수에 전달한 값과 동일한지 확인해야 합니다.


아니요, 그 중 하나가 닫혀있을 때 위치 일련 번호를 변경하는 문제가 해결되었습니다. 여기에 오류가있을 수 있다고 생각하여 두 번 이상 확인했지만 모든 것이 정상이며 필요한 순서가 선택되고 중지됩니다. 손실이 올바르게 계산되었지만 주문이 수정되기를 원하지 않습니다. .
 

delf :

마지막 주문을 닫는 옵션이 있으면 다음 주문이 다른 방향으로 열려야 합니다(각각 조건이 나타날 때).

더 엄격한 버전

 #define OrderBuy   0
#define OrderSell 1
int NewOrder;
int RezultatSend; 

int start()
{
... 
... 

if ( OrdersTotal ()== 0 )
{
if (NewOrder==OrderBuy)
   {
   if ( /*Условие для Buy*/ )
      { RezultatSend= OrderSend ( /*...buy*/ );     //Ставим Buy
         if (RezultatSend!=- 1 )NewOrder=OrderSell; //Если ставка прошла
      }
   }
 else
   {
   if ( /*Условие для Sell*/ )
      { RezultatSend= OrderSend ( /*...*/ );       //Ставим Sell
         if (RezultatSend!=- 1 )NewOrder=OrderBuy; //Если ставка прошла
      }
   }
}

...
...

}  
 

abeiks :

시간이 좀 견딜 수 없는 마지막 2개 구매 위치만 닫기 위해 닫기 구매 위치 블록 을 다시 만들지만 작동하지 않습니다 . 제안할 수 있습니까? ~처럼 블록을 변경?

하나의 마지막 위치를 닫는 기능(블록)을 만드는 것이 더 쉽고 편리합니다. 그리고 2번 실행합니다. 주기에서 또는 연속으로.
 
abeiks :

시간이 좀 견딜 수 없는 마지막 2개 구매 위치만 닫기 위해 닫기 구매 위치 블록 을 다시 만들지만 작동하지 않습니다 . 제안할 수 있습니까? ~처럼 블록을 변경?

얼마 전에 마지막 위치 검색을 해결하는 알고리즘을 제공 했습니다. 그리고 그것들로 무엇을 하느냐는 중요하지 않습니다. STOP을 세고, 삭제하고, 수정하는 것입니다. 적어도 "이미지와 유사성"으로 코드를 작성할 수 없다면 이것은 당신의 (프로그래밍)이 아닙니다 ...
 
rigonich :



고맙습니다!

 
peshihod :
하나의 마지막 위치를 닫는 기능(블록)을 만드는 것이 더 쉽고 편리합니다. 그리고 2번 실행합니다. 주기에서 또는 연속으로.

감사합니다 좋은 생각이네요 저도 해봐야겠네요