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

 
solnce600 :

모두에게 좋은 하루!

저는 초보자입니다. 처음으로 테스터에서 아이디어를 코드로 번역하려고 합니다.

아이디어는 간단합니다. 각 시간 초의 시작 가격에서 하나의 주문을 위아래로 교대로 엽니다.

간단한 코드를 작성했습니다 .... 하지만 문제는 촛불 하나를 열 때 어떤 이유로 프로그램이 때때로 1 개 이상의 주문을 열 수 있다는 것입니다.

1초 이내에 1틱 이상이 오면 이런 일이 일어나는 것 같아요.

옵션으로 if ( ) ..인 경우 조건 헤더를 넣어 보았습니다.

주문 총계 ( )==0

단 하나의 주문만 실제로 열립니다.



그러나이 양초를 열 때 다음날이 양초가 열리지 않기 때문에이 옵션은 나에게 적합하지 않습니다.

거래에 이미 다른 임의의 수의 주문이 있습니다.

나는 또한 OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP); return으로 start() 실행을 중단합니다. .... 도움이되지 않았습니다.


1초 안에 모든 틱에 1개의 주문만 열리도록 만드는 방법을 알려주시면 모두 감사하겠습니다.

정수 시작()

{
두 배 가격=묻다;
더블 SL=가격-300*포인트;
더블 TP=가격+300*포인트;
if( 시()==10 && 분()== 00 && 초()==00)
OrderSend(Symbol(),OP_BUY,0.1,가격,3,SL,TP);
}

이 옵션을 시도하십시오.
 int TimeNow, TimePrev, PrevType;

int start()   
 {
   double Price,SL,TP;
     int Ticket;

  TimeNow=iTime( NULL , 0 , 0 );
   if (TimePrev==TimeNow) return ( 0 );

   if (PrevType!= 1 ) {
   Price= NormalizeDouble (Ask, Digits );    
   SL= NormalizeDouble (Price- 300 * Point , Digits );    
   TP= NormalizeDouble (Price+ 300 * Point , Digits );
   Ticket= OrderSend ( Symbol (),OP_BUY, 0.1 ,Price, 3 ,SL,TP);
   if (Ticket!=- 1 ) { TimePrev=TimeNow; PrevType= 1 ; } }

   else if (PrevType!=- 1 ) {
   Price= NormalizeDouble (Bid, Digits );    
   SL= NormalizeDouble (Price+ 300 * Point , Digits );    
   TP= NormalizeDouble (Price- 300 * Point , Digits );
   Ticket= OrderSend ( Symbol (),OP_SELL, 0.1 ,Price, 3 ,SL,TP);
   if (Ticket!=- 1 ) { TimePrev=TimeNow; PrevType=- 1 ; } }
 }
 
alsu :


빠른 답변 정말 감사합니다. 만족합니다.
 
Diubakin :
이 옵션을 시도하십시오.
빠른 답변 정말 감사드립니다. 매우 만족합니다.
 
남. 찬성! 수동 모드에서 작동하는 closeBy() 함수는 어디에서 찾을 수 있습니까? 내 올빼미에 삽입하고 싶습니다. 수동이 아니라 자동으로 조건에 따라 최대 플러스가있는 반대 위치의 최대 마이너스 위치를 닫을 수 있습니다. 코드베이스에서 찾을 수 없습니다. 고맙습니다!
 
borilunad :
남. 찬성! 수동 모드에서 작동하는 CloseBy() 함수는 어디에서 찾을 수 있습니까? 수동이 아니라 자동으로 조건에 따라 최대 플러스가있는 반대쪽의 최대 마이너스 위치를 닫을 수 있도록 올빼미에 삽입하고 싶습니다. 코드베이스에서 찾을 수 없습니다. 고맙습니다!

이 옵션을 시도하십시오.

 bool LockOFF( int EA_Magic) {
 double Result, PrevLoss, PrevProfit;
     int pos, orders_total, order_type, MaxProfitTicket, MaxLossTicket;
   bool Ans;

 MaxProfitTicket=- 1 ; MaxLossTicket=- 1 ;

 orders_total= OrdersTotal ();
 for (pos=orders_total- 1 ; pos>= 0 ; pos--) {
   if (! OrderSelect (pos, SELECT_BY_POS, MODE_TRADES)) continue ;
   if (OrderSymbol()!= Symbol () || OrderMagicNumber()!=EA_Magic) continue ; // не наш ордер
   if (OrderType()> 1 ) continue ;
  Result=OrderProfit()+OrderSwap()+OrderCommission();
   if (Result< 0.0 && (PrevLoss== 0.0 || Result<PrevLoss)) {
   PrevLoss=Result; MaxLossTicket=OrderTicket(); order_type=OrderType(); } } // end of for

 if (MaxLossTicket==- 1 ) return ( false ); // нет убыточной позиции
 if (order_type==OP_BUY) order_type=OP_SELL; else order_type=OP_BUY; 

 orders_total= OrdersTotal ();
 for (pos=orders_total- 1 ; pos>= 0 ; pos--) {
   if (! OrderSelect (pos, SELECT_BY_POS, MODE_TRADES)) continue ;
   if (OrderSymbol()!= Symbol () || OrderMagicNumber()!=EA_Magic) continue ; // не наш ордер
   if (order_type!=OrderType()) continue ;
  Result=OrderProfit()+OrderSwap()+OrderCommission();
   if (Result> 0.0 && (PrevProfit== 0.0 || Result>PrevProfit)) {
   PrevProfit=Result; MaxProfitTicket=OrderTicket(); } } // end of for

 if (MaxProfitTicket==- 1 ) return ( false ); // нет противоположной прибыльной позиции

 Ans=OrderCloseBy(MaxLossTicket, MaxProfitTicket);
 if (!Ans) { Print ( "Ошибка при встречном закрытие" ); return ( false ); }
 
 return ( true ); }
 

세르게이, 한 눈에 서! 내가 망쳐놓고 조건을 만들고 해볼게. 매우 감사합니다!

나는 그것을 시도, 그것은 오류없이 작동합니다! 이제 조건을 실험하여 의미가 있고 질서가 있을 것입니다! 하지만 그건 내일이야!

매우 감사합니다! 그리고 흥미로운 꿈!

 
borilunad :
세르게이, 한 눈에 서! 내가 망쳐놓고 조건을 만들고 해볼게. 매우 감사합니다!
카운터 클로징 명령 대신 본격적인 카운터 클로징 기능을 삽입하십시오. 그렇지 않으면 테스터 전용입니다. 그리고 함수에서 변수를 초기화합니다.
 
artmedia70 :
카운터 클로징 명령 대신 본격적인 카운터 클로징 기능을 삽입하십시오. 그렇지 않으면 테스터 전용입니다. 그리고 함수에서 변수를 초기화합니다.
Artyom 감사합니다! 너무 늦었다. 오늘은 온라인 규칙에 따라 모든 것을 할 것입니다!
 
borilunad :
Artyom 감사합니다! 너무 늦었다. 오늘은 온라인 규칙에 따라 모든 것을 할 것입니다!
행운을 빕니다...
 

안녕하세요. 그런 질문이 있습니다.

나는 다른 전문가와 칠면조의 코드 조각에서 큰 어려움으로 지표를 다시 만들었습니다. 코드가 크지 않고 모든 것이 내가 원하는대로 수행됩니다.

사실 자체적으로 계산을 하고 차트에 위 또는 아래 화살표를 표시합니다.

차트에 화살표가 나타나면 주문이 올바른 방향으로 열리도록 전문가를 만드는 방법을 알려주세요.

더 정확하게는 지금 어떤 화살표가 활성화되어 있는지 알아야 하고 나머지는 내가 할 수 있다고 생각합니다.

나는 그것을 더 명확하게하기 위해 코드를 줄 것입니다. 이것은 표시기의 초기화입니다.

   SetIndexBuffer(1, Vverh);

   SetIndexStyle(1,DRAW_ARROW);

   SetIndexArrow(1,233);

   

   SetIndexBuffer(2,Vniz);

   SetIndexStyle(2,DRAW_ARROW);

   SetIndexArrow(2,234); 

모두 미리 감사드립니다