[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 변수가 정의되지 않음(기계적 오류)

 

안녕하세요.

나는 확산을 이해합니다. 확산은 항상 나를 반대합니다. 그래서 나는 그것을 손절매에 더하고 이익 실현에서 빼야 합니까? 따라서 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 );
   }
 
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에 의해 그려지는 것을 잊지 마십시오.