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

 

형제 여러분, 초보자의 시도를 무시하지 마십시오!

아카이브에 표시되는 기성 스크립트(또는 이와 유사한 것)가 필요합니다.

충동의 강도와 시간으로 필터링하여 일정에 따라 움직임.

예를 들어, 14.00에 상승 움직임이 시작되어 14.45에 끝났습니다.

그리고 움직임의 정도는 410포인트(5자리 계산)였다.

그래서 "과거" 차트에서 그러한 움직임을 시각적으로 나타내는 스크립트가 있습니까?

힘-시간에 의한 값이 독립적으로 삽입될 수 있도록.

______

이 작업을 수행하는 방법을 조언할 수 있는 지점 또는 장소를 표시하십시오.

프로그램에서 - 아리스토텔레스는 아니지만 그러한 스크립트를 만드는 것이 어렵지 않다고 생각합니다.

___

나는 구멍이 발견된 것으로 보이는 것과 가장 중요한 것으로 시간과 강도에 따른 필터 매개변수를 공유할 준비가 되었습니다.

 
Chibrikin :

여러분 모두에게!

PFG FX 트레이더(최신 버전)를 다운로드하여 실행했습니다. 지표를 만들어 보았습니다.

한 번에 두 개의 수수께끼:

1. 내 표시기는 편집기 아래에서 볼 수 있고 열리지만 파일 시스템에서는 찾을 수 없습니다. 검색조차 하지 않고 아예 없습니다.

2. 표시기가 파일을 엽니다 - 눈금을 씁니다. 쓰기도 하고 실패도 안하는데 파일도 못찾음!!!!

어떻게 그렇게 될수 있니? 윈도우 7.


7에서 일부 파일은 터미널에 위치하지 않는 경우가 있지만 D:\Users\username\AppData\Local\VirtualStore\Program Files 다음에는 터미널 이름

이것은 여러 터미널이 다른 디렉토리에 설치되어 있거나 터미널에 많은 표시기, 전문가 조언자 또는 기타 사용자 파일이 축적된 경우에 자주 발생합니다.

 
TUNGUS :

형제 여러분, 초보자의 시도를 무시하지 마십시오!

아카이브에 표시되는 기성 스크립트(또는 이와 유사한 것)가 필요합니다.

충동의 강도와 시간으로 필터링하여 일정에 따라 움직입니다.

예를 들어, 14.00에 상승 움직임이 시작되어 14.45에 끝났습니다.

그리고 움직임의 규모는 410포인트(5자리 계산)였다.

그래서 "과거" 차트에서 그러한 움직임을 시각적으로 나타내는 스크립트가 있습니까?

힘-시간에 의한 값이 독립적으로 삽입될 수 있도록.

______

이를 수행하는 방법을 조언할 수 있는 지점 또는 장소를 표시하십시오.

프로그램에서 - 아리스토텔레스는 아니지만 그러한 스크립트를 만드는 것이 어렵지 않다고 생각합니다.

___

나는 구멍이 발견된 것으로 보이는 것과 가장 중요한 것으로 시간과 강도에 따른 필터 매개변수를 공유할 준비가 되었습니다.


나는 당신이 스크립트에서 원하는 것을 이해하지 못합니다.
 

급하게 도움이 필요해요. 완전히 혼란스러워요. 다음은 거래 기능 및 주문 수정 기능입니다.

 void OrdersModifying(double& sl, double& tp)
{
  int total = OrdersTotal() - 1;
  sl = 0; tp = 0;
  
  for(int i=total; i>=0; i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)                             // Если ордер есть и он выбран..
    {
      if(g_type == OP_BUY)
      {
        if(i_sl != 0)                                                                  // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits);                     // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                  // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Digits);                     // Получаем значение тейкпрофита для выбранного ордера
      }
      if(g_type == OP_SELL)
      {
        if(i_sl != 0)                                                                  // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits);                 // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                  // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Digits);                 // Получаем значение тейкпрофита для выбранного ордера
      }
      if(sl != 0 || tp != 0)                                                             // Если полученные значения sl и tp не равныы 0, то..
      {
        OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);       // Модифицируем ордер
      }
    }
  }
}
 bool OpenBuy()
{
  g_ticket = -1;
  string myNote =  "сов баянул" ;
  
  if(GetPriceToInput() < Ask)
  {       
    g_ticket = OrderSend(Symbol(),OP_BUYLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Blue);
  }
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
 
  return(true);
}
 bool OpenSell()
{
  g_ticket = -1;
  string myNote =  "сов шортанул" ;
 
  if(GetPriceToInput() > Bid)
  {
    g_ticket = OrderSend(Symbol(),OP_SELLLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Red);
  }
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(true);
}
 bool Trade ( int signal)
{
  FindOrders();

   if (signal == SIGNAL_BUY)                                                           // Если сигнал на покупку и открытых ордеров нет..
     if (!OpenBuy())                                                                   // открываем лимитный ордер на покупку
       return ( false );                                                                
      
   if (signal == SIGNAL_SELL)                                                       // Если сигнал на продажу и открытых ордеров нет..
     if (!OpenSell())
       return ( false );                                                               // открываем лимитный ордер на продажу
  
  OrdersModifying(sl, tp); - ТУТ НЕ ВЪЕЗЖАЮ КАК БЫТЬ

   return ( true );
}

여러 기능이 하나에있을 때 모든 것이 작동했지만 주문 수정은 현재 작동하지 않습니다. 하지만 편의상 모든 기능을 분리하고 싶습니다. 일반적으로 주문을 수정하려면 OrdersModifying 함수가 필요합니다. 논리적으로 내가 삽입한 Trade 함수에 삽입해야 하지만 2개의 매개변수 sltpOrdersModifying 함수에서 전달해야 합니다 .

OrdersModifying 함수의 매개변수를 올바르게 전달 습니까? 그녀의 변수 sltp?

 
hoz :

급하게 도움이 필요해요. 완전히 혼란스러워요. 다음은 거래 기능 및 주문 수정 기능입니다.

여러 기능이 하나에있을 때 모든 것이 작동했지만 주문 수정은 현재 작동하지 않습니다. 하지만 편의상 모든 기능을 분리하고 싶습니다. 일반적으로 주문을 수정하려면 OrdersModifying 함수가 필요합니다. 논리적으로 내가 삽입한 Trade 함수에 삽입해야 하지만 2개의 매개변수 sltpOrdersModifying 함수에서 전달해야 합니다 .

OrdersModifying 함수의 매개변수를 올바르게 전달 습니까? 그녀의 변수 sltp?

먼저 sl = 0; tp = 0; 그리고 if(sl != 0 || tp != 0).
 
rigonich :
먼저 sl = 0; tp = 0; 그리고 if(sl != 0 || tp != 0).


Vitaly , 요점은 분명합니다. 보다:

 void OrdersModifying( double & sl, double & tp)
{
   int total = OrdersTotal () - 1 ;
  sl = 0 ; tp = 0 ;
  
   for ( int i=total; i>= 0 ; i--)
  {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true )                             // Если ордер есть и он выбран..
    {
       if (g_type == OP_BUY)
      {
         if (i_sl != 0 )                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble (OrderOpenPrice() - i_sl*pt, Digits );                     // Получаем значение стоп-лосса для выбранного ордера
         if (i_tp != 0 )                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble (OrderOpenPrice() + i_tp*pt, Digits );                     // Получаем значение тейкпрофита для выбранного ордера
      }
       if (g_type == OP_SELL)
      {
         if (i_sl != 0 )                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble (OrderOpenPrice() + i_sl*pt, Digits );                 // Получаем значение стоп-лосса для выбранного ордера
         if (i_tp != 0 )                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble (OrderOpenPrice() - i_tp*pt, Digits );                 // Получаем значение тейкпрофита для выбранного ордера
      }
       if (sl != 0 || tp != 0 )                                                             // Если полученные значения sl и tp не равныы 0, то..
      {
        OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400 ,Lime);       // Модифицируем ордер
      }
    }
  }
}

처음에는 sl = 0 ; tp = 0 ; 또한 사용자가 입력한 i_sli_tp 를 기반으로 이미 순서대로 있을 sltp 의 정규화된 값을 찾습니다. 그런 다음 확인합니다.   sl tp 는 0이 아닙니다. 함수 시작 부분에서 선언한 후 변경한 다음 ... 순서를 수정합니다.

글쎄, 만약   sl tp 는 0이므로 이러한 매개변수는 계산되지 않습니다. 이 변수의 값을 얻는 즉시 0이 아닌 값이 되고 순서를 수정할 수 있습니다.. 논리적인가요?

 
hoz :


Vitaly , 요점은 분명합니다. 보다:

처음에는 sl = 0 ; tp = 0 ; 또한 사용자가 입력한 i_sli_tp 를 기반으로 이미 순서대로 있을 sltp 의 정규화된 값을 찾습니다. 그런 다음 확인합니다.   sl tp 는 0이 아닙니다. 함수 시작 부분에서 선언한 후 변경한 다음 ... 순서를 수정합니다.

글쎄, 만약   sl tp 는 0이므로 이러한 매개변수는 계산되지 않습니다. 이 변수의 값을 얻는 즉시 0이 아닌 값이 되고 순서를 수정할 수 있습니다.. 논리적인가요?



죄송합니다. 안경이 없고 색상이 아닌 것을 보지 못했습니다. 그런데 이 함수에 매개변수를 전달하고 참조로 전달하는 이유는 무엇입니까? i_sl,g_type...이 전역 변수 라면 매개변수 없이 작동하며, 변경이 필요한 경우(수정 후 변수) 수정 후 동일한 함수에서 제거합니다.
 
rigonich :

죄송합니다. 안경이 없고 색상이 아닌 것을 보지 못했습니다. 그런데 이 함수에 매개변수를 전달하고 참조로 전달하는 이유는 무엇입니까? i_sl,g_type...이 전역변수라면 매개변수 없이 동작하며, 변경이 필요한 경우(수정 후 변수) 수정 후 동일한 함수에서 제거한다.


주문은 OpenBuy()OpenSell() 함수에 의해 전송되지만 주문은 OrdersModifying() 함수에 의해 수정됩니다.

저것들. 예를 들어 수정 함수가 Trade(int 신호) 또는 OpenBuy() OpenSell() 함수에 배치된 경우 OrdersModifying() 함수에서 수신한 sltp 값을 전달해야 하는 경우 상관 없습니다. . 결국, 그 기능에는 이러한 값이 없습니다.

 
hoz :


주문은 OpenBuy()OpenSell() 함수에 의해 전송되지만 주문은 OrdersModifying() 함수에 의해 수정됩니다.

저것들. 예를 들어 수정 함수가 Trade(int 신호) 또는 OpenBuy() OpenSell() 함수에 배치된 경우 OrdersModifying() 함수에서 수신한 sltp 값을 전달해야 하는 경우 상관 없습니다. . 결국, 그 기능에는 이러한 값이 없습니다.


가지고 있는 OpenBuy() OpenSell() 함수   sl 및 tp 없이 주문한 다음 주문이 접수되면 OrdersModifying() 함수에 의해 수정됩니다. OrdersModifying() 함수를 다른 곳에 배치 하고 일부 매개변수를 전달할 필요가 없습니다 . 이 함수에서는 변수 sl 및 tp만 선언해야 합니다. 정수 sl = 0, tp = 0;

죄송합니다. int가 아니라 double입니다.

 
rigonich :

가지고 있는 OpenBuy() OpenSell() 함수   sl 및 tp 없이 주문한 다음 주문이 접수되면 OrdersModifying() 함수에 의해 수정됩니다. OrdersModifying() 함수를 다른 곳에 배치 하고 일부 매개변수를 전달할 필요가 없습니다 . 이 함수에서는 변수 sl 및 tp만 선언해야 합니다. 정수 sl = 0, tp = 0;


현재 다음 거래 기능이 있습니다.

 bool Trade ( int signal)
{
  FindOrders();

   if (signal == SIGNAL_BUY)                                                           // Если сигнал на покупку и открытых ордеров нет..
     if (!OpenBuy())                                                                   // открываем лимитный ордер на покупку
       return ( false );                                                                
      
   if (signal == SIGNAL_SELL)                                                       // Если сигнал на продажу и открытых ордеров нет..
     if (!OpenSell())
       return ( false );                                                               // открываем лимитный ордер на продажу
  
   if (OrderStopLoss() == 0 && OrderTakeProfit() == 0 )
    OrdersModifying();                                                             // Модифицируем ордер, добавим SL и TP
    
   if (UseBU == true )
     MovingStopLossToBU();                                                         // Перевод в б.у. по достижению некоторого значения TP

   return ( true );
}

수정이 이루어지지 않습니다.