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

 

로봇이 작은 정지 로 양방향으로 열리고 승리하는 포즈를 선택하도록 만들 수 있습니까? 아니면 환상적입니까?

 

좋아 색으로...

문제는 - DC에서 "SL을 숨기고 싶습니다", 즉 열기 연산자로 설정하지 말고 EA 내부의 변수에 할당하십시오.

외부 이중 TrailingStop=25.0;

외부 이중 로트=0.1;

....
더블 스톱B;

.....

if( 진입 조건 ) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "EA 구매",123,0,Green);
StopB=Ask-TrailingStop*Lots; //
Hide stop <- 내가 제대로 하고 있는 걸까?

}

.....

if( 이익 종료 조건 || Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,바이올렛); //
포지션을 닫는다
반환(0); // 출구
}

그리고 SL의 퇴장 조건은 어디에서 규정합니까? "||"가 있는 이익 마감 조건과 함께 아니면 따로?

 

안녕하세요! iCustom 기능을 올바르게 사용하는 방법을 알려주세요. 히스토그램과 함께 별도의 창에 그려지는 표시기의 색상으로 거래 조건을 만들고 싶습니다.

색상 Oct_1=iCustom(NULL,0,"octava_1");

if ( Oct_1==녹색).... 등.

컴파일할 때 프로그램에서 오류가 발생하고 "'녹색' - 변수가 정의되지 않았습니다. 이유는 무엇입니까?

나는 대답에 매우 감사 할 것입니다)))

 

질문이 제거되고 대문자가 중요합니다)))

 
DOCTORS :

좋아 색으로...

질문은 - DC에서 "SL을 숨기고 싶습니다", 즉 열기 연산자로 설정하지 말고 EA 내부의 변수에 할당하십시오.

외부 이중 TrailingStop=25.0;

외부 이중 로트=0.1;

....
더블 스톱B;

.....

if( 진입 조건 ) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "EA 구매",123,0,Green);
StopB=Ask-TrailingStop*Lots; //
stop <- 내가 제대로 하고 있는 걸까?

}

.....

if( 이익 종료 조건 || Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,바이올렛); //
포지션을 닫는다
반환(0); // 출구
}

그리고 SL의 퇴장 조건은 어디에서 규정합니까? "||"가 있는 이익 마감 조건과 함께 아니면 따로?

나는 프로는 아니지만 같은 목표를 가지고 있었습니다. 개인적으로 이렇게 썼습니다.

이 부분은 열린 주문을 선택하고 중지를 설정하고 변수에 값을 가져옵니다.

 // +----------------------------------------------------------------------+
//------- : функция поиска открытых ордеров по символу графика, подхват и установки уровней стопа и профита
double TradeSymbol()
   {
   int     TotalTradeSymbol = 0 ;
   int     SendGo           = 0 ;
   total= OrdersTotal ();  
   for (cnt= 0 ;cnt<total;cnt++)
      {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
        {
         if ( OrderType ()== OP_BUY)
          {
           if (StopLoss   > 0 && Bid < OrderOpenPrice ()) {sl = NormalizeDouble ( OrderOpenPrice () - StopLoss* Point , Digits );}  
           if (TakeProfit > 0 )                           {tp = NormalizeDouble ( OrderOpenPrice () + TakeProfit* Point , Digits );}
          }
         if ( OrderType ()== OP_SELL)
          {
           if (StopLoss   > 0 && Ask > OrderOpenPrice ()) {sl = NormalizeDouble ( OrderOpenPrice () + StopLoss* Point , Digits );}  
           if (TakeProfit > 0 )                           {tp = NormalizeDouble ( OrderOpenPrice () - TakeProfit* Point , Digits );} 
          }
         if ( OrderStopLoss ()   != sl){SendGo++;}
         if ( OrderTakeProfit () != tp){SendGo++;}
         if (!UseVirtualTradeLevel && SendGo != 0 ) { OrderModify ( OrderTicket (), OrderOpenPrice (),sl,tp, 0 , CLR_NONE );}
        TotalTradeSymbol++;
        }
      }
     return (TotalTradeSymbol);  
    }
// +----------------------------------------------------------------------+

이 부분은 take로 확인하고 닫습니다.

 // +----------------------------------------------------------------------+
//------- : функция проверки тейкпрофита
void CheckTakeProfit()
   {
   if (tp == 0 ) return ( 0 );
   total= OrdersTotal ();  
   for (cnt= 0 ;cnt<total;cnt++)
      {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
        {
         if ( OrderType ()== OP_BUY)
          {
           if (Bid > tp)
            {
             OrderClose ( OrderTicket (), OrderLots (), Bid, SleepPage, Lime );
             if (UseSound) PlaySound ( "ok.wav" );
            }
          }
         if ( OrderType ()== OP_SELL)
          {
           if (Ask < tp)
            {
             OrderClose ( OrderTicket (), OrderLots (), Ask, SleepPage, Lime );
             if (UseSound) PlaySound ( "ok.wav" );
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+

이 부분은 stop으로 확인하고 닫습니다.

 // +----------------------------------------------------------------------+
//------- : функция проверки стоплоса
void CheckStopLoss()
   {
   if (sl == 0 ) return ( 0 );
   total= OrdersTotal ();  
   for (cnt= 0 ;cnt<total;cnt++)
      {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
        {
         if ( OrderType ()== OP_BUY)
          {
           if (Bid < sl)
            {
             OrderClose ( OrderTicket (), OrderLots (), Bid, SleepPage, Blue );
             if (UseSound) PlaySound ( "ok.wav" );
            }
          }
         if ( OrderType ()== OP_SELL)
          {
           if (Ask > sl)
            {
             OrderClose ( OrderTicket (), OrderLots (), Ask, SleepPage, Blue );
             if (UseSound) PlaySound ( "ok.wav" );
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+
추신

교수 - 독학으로 비웃지 마세요. 다른 방법으로 가능할 수도 있지만 어쨌든 저에게는 효과가 있습니다.

 
elmucon :

나는 프로는 아니지만 같은 목표를 가지고 있었다. 개인적으로 이렇게 썼습니다.

이 부분은 열린 주문을 선택하고 중지를 설정하고 변수에 값을 가져옵니다.

이 부분은 take로 확인하고 닫습니다.

이 부분은 stop으로 확인하고 닫습니다.

추신

교수 - 독학으로 비웃지 마세요. 다른 방법으로 가능할 수도 있지만 어쨌든 저에게는 효과가 있습니다.

모든 것이 거의 윙윙 거리고 있습니다! 유일한 것은 입력 / 출력에서 몇 가지 이상한 점입니다. 글쎄, 그러한 전략은 미끄러짐을 방지하지 못합니다. 그리고 정말 감사합니다!
 

고문의 현재 기간을 결정하는 방법을 알려주십시오.

M1 기간이 한 조건을 충족하고 M5 기간이 다른 조건을 충족하는 경우 필요합니다.

 
sss2019 :

고문의 현재 기간을 결정하는 방법을 알려주십시오.

M1 기간이 한 조건을 충족하고 M5 기간이 다른 조건을 충족하는 경우 필요합니다.


Period() 함수 사용
 
sss2019 :

고문의 현재 기간을 결정하는 방법을 알려주십시오.

M1 기간이 한 조건을 충족하고 M5 기간이 다른 조건을 충족하는 경우 필요합니다.

 if ( Period ()== 1 ) return; //Условие минуток
if ( Period ()== 5 ) bool working=true; //Условие пятиминуток
 
splxgf :


고맙습니다. 따라서 기간 M1은 값 1에 해당하고 기간 M5는 값 5에 해당하며 기간 H1은 값 60에 해당하고 기간 H4-240이 맞습니까?

M1 기간 동안 사례 1의 값이 선택되고 M15 기간 동안 사례 15의 값이 선택될 때 이 구성이 작동해야 합니다. 이렇게 작동합니까, 아니면 사례 1 사례 2 사례 3을 수행해야 하나요 - 순서대로?

   switch ( Period ())
    {
     case 1 : Ba = 60 ;
     case 5 : Ba = 12 ;
     case 15 : Ba = 4 ;
     case 30 : Ba = 2 ;
     case 60 : Ba = 1 ;
    }