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

 
그런 건 없습니다. 이전 빌드에 대한 지원이 중단되었습니다.
 

안녕하세요! 어드바이저 코드에서 자금 관리를 변경하도록 도와주세요.

EA에는 2가지 조건이 있습니다.

1- 최소 로트 + 일정한 로트로 작업 또는 2- 무료 자금의 % 증가

1차 거래 실패 후 0.01랏, 2차 거래도 실패하면 0.02랏만큼 로트를 늘려야 합니다.

그리고 3연패 이후 다시 로트가 최소가 되었다.

Expert Advisor에 삽입할 수 있는 기능이 필요합니다(가능한 한 간단한 것이 바람직함).

include(lot_lib)를 통해 코드에 삽입하려고 하면 많은 오류가 발생하고 아무 일도 일어나지 않습니다.

시간 내주셔서 미리 감사드립니다!.


 

안녕하세요!

저는 코드를 작성 중입니다. 요점은 마지막 세 막대의 최저/최고 지점에서 손절매 수준을 설정하는 것입니다. 다음은 일어난 일입니다.

 double FindSL( int mode)
   {
     double sl; //уровень стоплосса
     double buf; //буфер
     double lvl1, lvl2, lvl3; //выборка из 3-х последних баров
     if (mode == 1 ) //покупали
      {
       lvl1 = iLow (symb, 0 , 0 );
       lvl2 = iLow (symb, 0 , 1 );
       lvl2 = iLow (symb, 0 , 2 );
       buf = MathMin (lvl1, lvl2); //ищем низ
       sl = MathMin (buf, lvl3);
      }
     else if (mode == 2 ) //продавали
      {
       lvl1 = iHigh (symb, 0 , 0 );
       lvl2 = iHigh (symb, 0 , 1 );
       lvl3 = iHigh (symb, 0 , 2 );
       buf = MathMax (lvl1, lvl2); //ищем вершину
       sl = MathMax (buf, lvl3);
      }
     return (sl);
   }

주문은 다음 코드로 열립니다.

 int OpenOrder( int sell_or_buy)                                   //Открытие ордеров
   {
    GetLot();

     if (sell_or_buy== 2 )                                           //покупка
       {
        StopLoss = FindSL( 1 );
         OrderSend (symb, OP_BUYSTOP, Lots, iHigh (symb, 0 , 1 ), 0 , StopLoss, 
         iHigh (symb, 0 , 1 )+TakeProfit* Point , "Ichimoku Simple Adviser Trade" , 1001 , TimeCurrent ()+ExpirationTime, Green );    
         return ( 1 );
       }
     else if (sell_or_buy== 1 )                                     //продажа
       {
        StopLoss = FindSL( 2 );
         OrderSend (symb, OP_SELLSTOP, Lots, iLow (symb, 0 , 1 ), 0 , StopLoss, 
         iLow (symb, 0 , 1 )-TakeProfit* Point , "Ichimoku Simple Adviser Trade" , 1001 , TimeCurrent ()+ExpirationTime, Red );
         return ( 1 );
       }
     else { return ( 0 );}
   } 

StopLoss는 전역 변수 입니다.

테스트를 하다보면 한 번에 돈이 다 떨어지는 순간이 옵니다. 로트가 작기 때문에 유일한 문제는 어떤 이유로 손절매가 설정되지 않는다는 것입니다(0과 같음)

무엇이 잘못되었는지 알 수 없습니다.

코드를 살펴보십시오. 어디에서 실수를 할 수 있습니까?

 
gogent :

안녕하세요!

저는 코드를 작성 중입니다. 요점은 마지막 세 막대의 최저/최고 지점에서 손절매 수준을 설정하는 것입니다. 다음은 일어난 일입니다.

다음 코드로 주문을 엽니다.

StopLoss는 전역 변수입니다.

테스트를 하다보면 한 번에 돈이 다 떨어지는 순간이 옵니다. 로트가 작기 때문에 유일한 문제는 어떤 이유로 손절매가 설정되지 않는다는 것입니다(0과 같음)

무엇이 잘못되었는지 알 수 없습니다.

코드를 살펴보십시오. 어디에서 실수를 할 수 있습니까?

손절매 는 매수 후 항상 0입니다.

이유: lvl3 변수가 정의되지 않음(기계적 오류)

[Deleted]  

안녕하세요.

나는 확산을 이해합니다. 확산은 항상 나를 반대합니다. 그래서 나는 그것을 손절매에 더하고 이익 실현에서 빼야 합니까? 따라서 50포인트의 순이익을 얻으려면(통화 쌍에 대한 스프레드는 3포인트) 순서대로 수익 창출 = 53포인트를 지정해야 합니다. 50포인트의 순 손실을 허용하는 경우 주문에서 손절매 = 47포인트를 지정해야 합니다. 내가 모든 것을 올바르게 이해 했습니까?

미리 감사드립니다!

 
01123456789 :

안녕하세요.

확산을 이해합니다. 확산은 항상 나를 반대합니다. 그래서 손절매에 더하고 이익실현에서 빼야 합니까? 따라서 50포인트의 순이익을 얻으려면(통화 쌍에 대한 스프레드는 3포인트) 순서대로 수익 창출 = 53포인트를 지정해야 합니다. 50포인트의 순 손실을 허용하는 경우 주문에서 손절매 = 47포인트를 지정해야 합니다. 내가 모든 것을 올바르게 이해 했습니까?

미리 감사드립니다!


안녕하세요!

우리가 당신의 계획과 기대에 대해 이야기하고 있다면 모든 것이 그렇습니다.

공식적으로 말하면 "순서대로 ... 이익을 얻음을 표시 = 53 점"이 의미하는 바가 명확하지 않습니다.

 

안녕하세요! 사용자 f-it에 대한 이해를 돕습니다.

내가 이해하는 대로: 조건이 true이면 isitpik-(true)에 대해 반환됩니다. 조건은 AO의 계산을 포함하는 0번째 버퍼에 의해 계산됩니다. 아니면 버퍼에 마지막 i-bar만 있고 이러한 기준에 대한 조건이 충족되면 (true)가 isitpik()에 전달됩니까? 그리고 이것이 조건에 의해 위에서 수행된 경우 왜 int 유형 을 변수(i)에 할당합니까?


 bool isitpik( int i )
   {
   if (ExtBuffer0[i]> 0 && ExtBuffer0[i]>ExtBuffer0[i+ 1 ] && ExtBuffer0[i]>ExtBuffer0[i- 1 ]) return ( true );
   if (ExtBuffer0[i]< 0 && ExtBuffer0[i]<ExtBuffer0[i+ 1 ] && ExtBuffer0[i]<ExtBuffer0[i- 1 ]) return ( true );
   }
[Deleted]  
tara :


안녕하세요!

우리가 당신의 계획과 기대에 대해 이야기하고 있다면 모든 것이 그렇습니다.

공식적으로 말하면 "순서대로 ... 이익을 얻음을 표시 = 53 점"이 의미하는 바가 명확하지 않습니다.

"주문에서 이익 실현 = 53 포인트를 지정하십시오." 나는 보류 주문(예: Buy Stop )과 두 개의 손절매 및 이익실현 열을 의미했습니다. 즉, 50포인트의 이익을 내고 싶다면 3포인트가 스프레드를 먹어치울 것이기 때문에 50이 아닌 53포인트의 이익실현을 보류 주문에서 지정해야 합니다. 그래서?
 
01123456789 :
"주문에서 이익 실현 = 53 포인트를 지정하십시오"라는 말은 보류 중인 주문(예: 정지 매수)과 손절매 및 이익실현 열 두 개를 의미했습니다. 즉, 50포인트의 이익을 내고 싶다면 3포인트가 스프레드를 먹어치울 것이기 때문에 50이 아닌 53포인트의 이익실현을 보류 주문에서 지정해야 합니다. 그래서?

주문의 TP와 SL은 포인트가 아닌 가격으로 표시됩니다.
 
01123456789 :
"주문에서 이익 실현 = 53 포인트를 지정하십시오"라는 말은 보류 중인 주문(예: 정지 매수)과 손절매 및 이익실현 열 두 개를 의미했습니다. 즉, 50포인트의 이익을 내고 싶다면 3포인트가 스프레드를 먹어치울 것이기 때문에 50이 아닌 53포인트의 이익실현을 보류 주문에서 지정해야 합니다. 그래서?
각 DC에서 이 모든 것이 계약서에 규정되어 있습니다. 매수 주문은 매도 라인에서 마감되고 매도 주문은 입찰 라인에서 마감됩니다. 맞습니다. 어떤 스프레드를 이익에 추가하느냐에 따라 이해합니다. 당신이 50p를 얻고 싶다면. 그런 다음 +3(총 쌍의 스프레드에 따라 다름). 모든 차트는 Bid에 의해 그려지는 것을 잊지 마십시오.