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

 
mamba5 :

고문을 테스트하는 동안 오류 130이 생성됩니다. 잘못된 중지입니다. 외부 변수 TakeProfit 및 StopLoss는 NewOrder 함수에 전달되어야 하며 이를 위해 모든 작업을 수행한 것 같지만 인쇄 결과에서 0이 전달됩니다. 제가 알기로는 오류의 원인이 여기에 있지만 아직 해결 방법을 찾지 못했습니다. 도움을 요청합니다.

외부 정수 TakeProfit=100;
extern int StopLoss=100;

...........................................................

NewOrder(OP_BUYSTOP, Lot, TakeProfit, StopLoss);
NewOrder(OP_SELLSTOP, Lot, TakeProfit, StopLoss);

int NewOrder(int Cmd,double Lot,int TakeProfit,int StopLoss)

여기서 문제는 전역 변수 StopLoss가 있고 힙에 여전히 매개 변수로 프로시저에 전달된다는 것입니다. 절차에서 이름을 바꾸는 것이 좋습니다.

 
fore-x:

Как в mql4 из одного индикатора управлять более чем 8 буферами обмена, существует ли способ обхода данного ограничения?

Ну, как пример, мне нужно построить более 8 индикаторных линий, но из одной программы.

준코 :

추세선.

그리고 더 자세히? 링크 좀 주실 수 있나요? 어디서 읽을 수 있나요?
 
splxgf :

여기서 문제는 전역 변수 StopLoss가 있고 힙에 여전히 매개 변수로 프로시저에 전달된다는 것입니다. 절차에서 이름을 바꾸는 것이 좋습니다.


네가 옳아. 정말 그런 의미가 더 큽니다. 결정된:

 //+----------Функция открытия ордера-----------------------------------+
int NewOrder( int Cmd, double Lot, int TaPr, int StLo)
{
 double TP= 0 ; // тейкпрофит
 double SL= 0 ; // стоплос
 double PR= 0 ; // цена
 while (! IsTradeAllowed ()) Sleep ( 100 );
 if (TaPr< MarketInfo ( Symbol (),MODE_STOPLEVEL))  
    TaPr= MarketInfo ( Symbol (),MODE_STOPLEVEL);
 if (StLo< MarketInfo ( Symbol (),MODE_STOPLEVEL))  
    StLo= MarketInfo ( Symbol (),MODE_STOPLEVEL);
 if (Cmd==OP_BUY)
   {
    PR= NormalizeDouble (Ask, Digits );
     if (TaPr> 0 )TP= NormalizeDouble (Ask, Digits )+ NormalizeDouble (TaPr* Point , Digits );
     if (StLo> 0 )SL= NormalizeDouble (Bid, Digits )- NormalizeDouble (StLo* Point , Digits );
   }
 if (Cmd==OP_SELL)
   {
    PR= NormalizeDouble (Bid, Digits );
     if (TaPr> 0 )TP= NormalizeDouble (Bid, Digits )- NormalizeDouble (TaPr* Point , Digits );
     if (StLo> 0 )  SL= NormalizeDouble (Ask, Digits )+ NormalizeDouble (StLo* Point , Digits );
   }
 Print ( "TaPr=" ,TaPr, " StLo=" ,StLo, " StopLevel=" , MarketInfo ( Symbol (),MODE_STOPLEVEL));
 tic= OrderSend ( Symbol (),Cmd,Lot,PR, 3 ,SL,TP, "" , 0 , 0 , CLR_NONE );
 if (tic< 0 ) Print ( "ошибка открытия ордера:" , GetLastError ()); Print ( "Cmd-" ,Cmd, " Lot=" ,Lot, " PR=" ,PR, " SL=" ,SL, " TP=" ,TP);
return (tic);
}
그러나 그것은 별로 도움이 되지 않았습니다. TaPr 및 StLo= 100인 반면 PR, SL 및 TP는 어떤 이유로 0입니다.....
파일:
 

안녕하세요, 주문이 1회만 열리도록 조건을 작성하는 것을 도와주세요, 이 단계에서는 매 틱마다 열리도록

   topOrder= OrderSend ( Symbol (),OP_BUYSTOP, 1 ,Hinput, 3 ,Price_high-(height_box/ 100 *sl),Price_high+(height_box/ 100 *tp), "my order #" , 16384 , 0 , Green );
                     if (topOrder< 0 )
                        {
                           Print ( "Верхний ордер ошибка #" , GetLastError ());
                           return ( 0 );
                        }

맨 위에는 그 전에 SL과 TP 시가를 계산한 다음 오더가 열리며, 오더가 이미 설정되어 있는지 확인하는 작업만 하면 됩니다. 배치되지 않음, 아마도 어떻게 든 아직 수행하는 방법을 알 수 없습니다.

미리 감사드립니다

 
fore-x :
그리고 더 자세히? 링크 좀 주실 수 있나요? 어디서 읽을 수 있나요?
어떤 링크? 막대 를 추세선으로 연결합니다. 따라서 결함이 있는 버퍼에서 독립적입니다.
 
artmedia70 :
직접 차트에 올리기 전까지는 Expert Advisor 작업 시 반영되지 않습니다. 어떻게 했어?
테스터에서 EA를 실행하고 있습니다. 테스터가 완료되면 표시줄 정보가 나타납니다.
 
mamba5 :


네가 옳아. 정말 그런 의미가 더 큽니다. 결정된:

그러나 그것은 별로 도움이 되지 않았습니다. TaPr 및 StLo= 100인 반면 PR, SL 및 TP는 어떤 이유로 0입니다.....


  NewOrder(OP_BUYSTOP, Lot, TakeProfit, StopLoss);
  NewOrder(OP_SELLSTOP, Lot, TakeProfit, StopLoss);
 if (Cmd==OP_BUY)
   {
    PR= NormalizeDouble (Ask, Digits );
     if (TaPr> 0 )TP= NormalizeDouble (Ask, Digits )+ NormalizeDouble (TaPr* Point , Digits );
     if (StLo> 0 )SL= NormalizeDouble (Bid, Digits )- NormalizeDouble (StLo* Point , Digits );
   }
 if (Cmd==OP_SELL)
   {
    PR= NormalizeDouble (Bid, Digits );
     if (TaPr> 0 )TP= NormalizeDouble (Bid, Digits )- NormalizeDouble (TaPr* Point , Digits );
     if (StLo> 0 )  SL= NormalizeDouble (Ask, Digits )+ NormalizeDouble (StLo* Point , Digits );
   }
 

손실 거래를 계산하는 방법을 알려주세요.

즉, 손절매로 마감된 거래.

수익성 있는 거래 후 카운터를 재설정하십시오.

즉, 이익실현으로 마감한 후 카운터를 재설정합니다.

초기 카운터 숫자 = 1

 int Schetcik = 1 ;

구매 및 판매에 대한 모든 거래를 계산해야 합니다.

 
Vinin :



고맙습니다! ))) 그렇게 명확하게 비교되지는 않았지만 오류를 볼 수 없었습니다.
 
belck :

손실 거래를 계산하는 방법을 알려주세요.

즉, 손절매로 마감된 거래.

수익성 있는 거래 후 카운터를 재설정하십시오.

즉, 이익실현으로 마감한 후 카운터를 재설정합니다.

초기 카운터 숫자 = 1

구매 및 판매에 대한 모든 거래를 계산해야 합니다.


손절매로 마감한다고 해서 거래가 수익성이 없다는 의미는 아니며 그 반대의 경우도 마찬가지입니다. 물론 스톱과 테이크가 오프닝에서 설정되고 다시 건드리지 않는 한