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

 
extralifes :

코드를 알아낼 수 있도록 도와주세요. 상태를 정확하게 설명하는 방법을 모르겠습니다.

다음은 고문의 일부입니다.

if(total<1)

{

while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7)) -какой оператор использовать и как его оформить?
{
OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}

while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3)) - какой оператор использовать и как его оформить?
{
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);

}
}
}
}
울타리 좀...
 
butthead :

심리적인 요인이 저를 가로막는다는 것을 이해합니다..탐욕..300R도 잃을까 봐..어떻게 해야 할까요?..진짜 계정을 잊어 버리나요?..


방향을 바꾸면? "이기려고 애쓰는 것"이 아니라 "지지 않기 위해 애쓰는 것"입니다.
 

이해를 도와주세요!

아이디어의 핵심: iMACD가 성장하는 동안 - BUY를 유지하고 떨어지기 시작하는 즉시 - BUY를 닫고 SELL을 엽니다. 비교는 현재 값을 제외한 마지막 세 값을 기반으로 합니다.

코드 문제: iMACD 값이 +-0인 많은 주문을 여는 것으로 이해합니다. Normalizedouble() 은 도움이 되지 않습니다.

코드는 다음과 같습니다.

 int start()
  {

double MA1= iMACD ( NULL , 0 , 5 , 34 , 1 , PRICE_CLOSE , MODE_MAIN, 1 ), 
       MA2= iMACD ( NULL , 0 , 5 , 34 , 1 , PRICE_CLOSE , MODE_MAIN, 2 ),
       MA3= iMACD ( NULL , 0 , 5 , 34 , 1 , PRICE_CLOSE , MODE_MAIN, 3 );
       
       
       
if (MA1>MA2>MA3 && Napr== 1 )
    {Closeall();
    Napr= 0 ;
     OrderSend ( Symbol (), OP_BUY, Lot, Ask, 5 , 0 , 0 );}

if (MA1<MA2<MA3 && Napr== 0 )
    {Closeall();
    Napr= 1 ;
     OrderSend ( Symbol (), OP_SELL, Lot, Bid, 5 , 0 , 0 );}



   return ( 0 );
  }
 
extralifes :

코드를 알아낼 수 있도록 도와주세요. 상태를 정확하게 설명하는 방법을 모르겠습니다.

다음은 고문의 일부입니다.


total=OrdersTotal();

if(total<1)

{

while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7)) -какой оператор использовать и как его оформить?
{
OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}

while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3)) - какой оператор использовать и как его оформить?
{
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);

}
}
}
}
어떻게 하는게 맞는지 알려주세요?


그래서 그것은 작동하지 않습니다, 그렇죠?

total= OrdersTotal ();
if (total< 1 )

{

   if (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>= 2 && iRSI ( NULL , 0 ,rsi_period, PRICE_CLOSE , 2 )> 0.7 &&   iRSI ( NULL , 0 ,rsi_period, PRICE_CLOSE , 0 < 0.7 )
         OrderSend ( Symbol (), OP_SELL, lots, NormalizeDouble (Bid, Digits ), 3 , /*Ask+10*Point*/ 0 , /*Bid-10*Point*/ 0 , "ADX sell" , magic, 0 , CLR_NONE );
   

   if (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>= 2 && iRSI ( NULL , 0 ,rsi_period, PRICE_CLOSE , 2 )< 0.3 && iRSI ( NULL , 0 ,rsi_period, PRICE_CLOSE , 0 ) > 0.3 ) 
       OrderSend ( Symbol (), OP_BUY, lots, NormalizeDouble (Ask, Digits ), 3 , /*Bid-10*Point*/ 0 , /*Ask+10*Point*/ 0 , "ADX buy" , magic, 0 , CLR_NONE );

  }
 

아니오를 통해 작동하지 않는 경우.

따라서 (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2 조건이 올바른 동안 iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7 && iRSI(NULL,0,rsi_period , PRICE_CLOSE,0<0.7)

마찬가지로 그 반대도 마찬가지입니다.

while 또는 bool을 사용하여 어떻게든 이 작업을 수행할 수 있습니까? 프로그래밍에서 완전한 크레인. 나는 논리적 사슬을 이해하지만 코드로 손을 번역하는 것은 비뚤어진 것입니다.

 
extralifes :

아니오를 통해 작동하지 않는 경우.

따라서 (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2 조건이 올바른 동안 iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7 && iRSI(NULL,0,rsi_period , PRICE_CLOSE,0<0.7)

마찬가지로 그 반대도 마찬가지입니다.

while 또는 bool을 사용하여 어떻게든 이 작업을 수행할 수 있습니까? 프로그래밍에서 완전한 크레인. 나는 논리적 사슬을 이해하지만 코드로 손을 번역하는 것은 비뚤어진 것입니다.

돈이 떨어질 때까지 열려? 또는 막대당 1회 열립니까? 또는 틱당 1회?
 

안녕하세요! 나는 (때로는) StopOut에 가는 것을 원하지 않습니다. 나는 최악의 조건에서 StopOut을 "포착"하지 않는 값으로 로트를 제한하기로 결정했습니다. 나는 오랜 시간 시행착오를 겪었다. 누군가가 해결책을 가지고 있을까요?

초기 데이터:

- 통화 쌍 - 반드시 EURUSD는 아님

- 가격 (구매/판매 가격)

- StopLoss를 포인트 단위로 지정(StopLoss 수준에 도달하더라도 StopOut을 catch하지 않는 최악의 조건이라고 가정)

- 로트의 설정 값

- MT4 기능을 사용하여 다른 값 추출: 1 lot 크기, 레버리지, 교차 비율

코드를 원합니다.

이론적으로 나는 그것이 필요하다는 것을 이해합니다. 잔액에서 StopLoss 수준에서 가능한 손실을 뺀 값을 마진으로 나눕니다. 그리고 이 값은 StopOut(백분율)보다 커야 합니다.

 
Cmu4 :

이해를 도와주세요!

아이디어의 핵심: iMACD가 성장하는 동안 - BUY를 유지하고 떨어지기 시작하는 즉시 - BUY를 닫고 SELL을 엽니다. 비교는 현재 값을 제외한 마지막 세 값을 기반으로 합니다.

코드 문제: iMACD 값이 +-0인 많은 주문을 여는 것으로 이해합니다. Normalizedouble()은 도움이 되지 않습니다.

코드는 다음과 같습니다.


 int start()
  {

double MA1= iMACD ( NULL , 0 , 5 , 34 , 1 , PRICE_CLOSE , MODE_MAIN, 1 ), 
       MA2= iMACD ( NULL , 0 , 5 , 34 , 1 , PRICE_CLOSE , MODE_MAIN, 2 ),
       MA3= iMACD ( NULL , 0 , 5 , 34 , 1 , PRICE_CLOSE , MODE_MAIN, 3 );
       
       
       
if (MA1>MA2 && MA2>MA3 && Napr== 1 )
    {Closeall();
    Napr= 0 ;
     OrderSend ( Symbol (), OP_BUY, Lot, Ask, 5 , 0 , 0 );}

if (MA1<MA2 && MA2<MA3 && Napr== 0 )
    {Closeall();
    Napr= 1 ;
     OrderSend ( Symbol (), OP_SELL, Lot, Bid, 5 , 0 , 0 );}



   return ( 0 );
  }
그게 문제였나봐
 
ilunga :
돈이 떨어질 때까지 열려? 또는 막대당 1회 열립니까? 또는 틱당 1회?

조건은 새 막대 마다 확인됩니다. 이 경우 시간 프레임은 1시간입니다. 이 조건은 매시간 시작될 때 확인됩니다.
 
Vinin :

그게 문제였나봐

아니오 .. 나는 당신이 제안한대로했습니다 - 동일하게 유지됩니다.

또한 조건에 따라 열고 닫는 블록으로 분리하여 코드를 변경했습니다. 모두 하나. 나는 이미 무엇을해야할지 모르겠다.

다음은 예고편에 나오는 테스터의 고문인 테스터의 스크린샷입니다.

파일: