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

 
artmedia70 :

int iHighest ( 문자열 기호, 정수 기간, 정수 유형, 정수 개수=WHOLE_ARRAY, 정수 시작=0)

발견된 가장 높은 값의 인덱스를 반환합니다(현재 막대에 상대적인 오프셋).
옵션:
기호 - 데이터를 검색할 기기의 기호 이름입니다. NULL은 현재 문자를 의미합니다.
시간대 - 기간. 차트 기간 중 하나일 수 있습니다. 0은 현재 차트의 기간을 의미합니다.
유형 - 시계열 ID. 시계열 식별자 값 중 하나일 수 있습니다.
세다 - 검색을 수행해야 하는 시계열 요소의 수(현재 막대에서 인덱스 위쪽 방향).
시작 - 가장 높은 값에 대한 검색이 시작되는 초기 막대의 인덱스(현재 막대를 기준으로 한 오프셋)입니다. 음수 값은 무시되고 null 값으로 대체됩니다.
예시:


정말 감사합니다. 더 이상 질문이 없을 것 같아요.
 
ask :

사람이 이해할 수 없는 것이 무엇인지 모릅니다. 공격성과 무례함을 일으킨 원인을 이해하지 못하지만(그들은 그냥 무시할 수 있음) 다른 사람들이 스스로 대답하거나 처리할 수 있었을 것입니다. 상관없나요?

헛되이 Alexei를 그렇게 인식합니다. 그는 여기에서 가장 자비로운 사람들 중 한 명입니다. 그는 당신을 화나게 할 의도가 전혀 없었습니다. 작업이 명확하지 않으면 모든 사람이 텔레파시로 보내집니다. 이것은 의미있는 지역 농담입니다.
 
Reshetov :

여기에 있습니다(코드에 더 많은 오류가 있지만 컴파일러를 통과하지도 않습니다): 게다가 컴파일러의 관점에서 코드를 보다 정상적인 코드로 변경하더라도:

비교하기 전에 실제 값을 먼저 정규화하지 않으면 여전히 이론적으로 올바르지 않습니다. 그보다 더 나쁜 것은 가격이 한 틱에 1핍 이상 변동하고 조건을 초과하는 경우 정규화 결과를 얻지 못할 수 있다는 것입니다.

다음과 같이 교차 조건을 검색하는 것이 더 정확합니다.


PS MetaTrader에서 컴파일 후 오류가 있는 위치를 찾는 것은 매우 쉽습니다.

1. "파일" 열의 "도구" 탭에서 괄호 안에 컴파일러가 오류를 감지한 줄 번호와 기호 번호가 쉼표로 구분되어 표시됩니다.

2. "설명" 열의 동일한 탭에서 오류 메시지를 두 번 클릭하면 편집기의 커서가 컴파일러가 바로 이 오류를 발견한 위치로 이동합니다.


힌트를 주셔서 감사합니다.

 
좋은 오후입니다! 모든 포럼 참가자들에게 존경을 표합니다! 가능하다면 말해주세요 - 플랫폼을 끄면 로그의 데이터는 반드시 지워지겠죠? 그리고 전문가의 인쇄물이나 다른 출력 데이터를 작성하여 컴퓨터가 꺼졌을 때 저장되도록 하는 방법은 무엇입니까? 메모장이나 다른 곳에? 너무 어려운데 가능한가요?
 
dkfl.zrjdktdbx :
좋은 오후입니다! 모든 포럼 참가자들에게 존경을 표합니다! 가능하다면 말해주세요 - 플랫폼을 끄면 로그의 데이터는 반드시 지워지겠죠? 그리고 전문가의 인쇄물이나 다른 출력 데이터를 작성하여 컴퓨터가 꺼졌을 때 저장되도록 하는 방법은 무엇입니까? 메모장이나 다른 곳에? 너무 어려운데 가능한가요?
글쎄요, 프로그램 폴더의 로그를 보면 그곳에서 흥미로운 것들을 많이 발견할 것입니다.
 
고맙습니다!
 
주문 개시 가격과 손절매 가격을 감안할 때 예금 통화 의 가능한 손실을 계산하는 방법을 알려주십시오.
 
sss2019 :
주문 개시 가격과 손절매 가격을 고려할 때 예금 통화의 가능한 손실을 계산하는 방법을 알려주실 수 있습니까?
 //--------------------------------------------------------------------
// Функция модификации StopLoss всех ордеров указанного типа
// Глобальные переменные:
// Mas_Ord_New             Массив ордеров последний известный
// int TralingStop         Значение TralingStop(количество пунктов)
//--------------------------------------------------------------------
void SampleTrailing_texbook ( int Tip, double V_StopLossPips, double V_TakeProfitPips)
  {
   int Ticket;                       // Номер ордера
   double
   Price,                           // Цена открытия рыночного ордера
   TS,                               // TralingStop (относит.знач.цены)
   SL,                               // Значение StopLoss ордера
   TP;                               // Значение TakeProfit ордера
   double difference; //разность в пунктах    
   double Profit;
   
   bool Modify;                     // Признак необходимости модифи.
//----------------------------------------------------------------------
      PointValue=MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE));      
      Print( "PointValue = " ,PointValue, " Point  = " , DoubleToStr(Point, Digits) );
      Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL ); // мин уровень трала
      Modify= false ;                       // Пока не назначен к модифи
      
      Price = OrderOpenPrice();           // Цена открытия ордера
      SL    = V_StopLossPips;             // Значение StopLoss ордера
      TP    = V_TakeProfitPips;           // Значение TakeProft ордера
      Ticket= OrderTicket();               // Номер ордера
      
       if (TralingStop<Level_new)           // Если меньше допустимого..
         TralingStop=Level_new;           // .. то допустимый
         TS=TralingStop*Point;             // То же в относит.знач.цены
       //-----------------------------------------------------------------
       switch (Tip)                         // Переход на тип ордера
        {
         case 0 :                         // Ордер Buy
            difference = NormalizeDouble (Bid-TS - OrderOpenPrice(), Digits)/Point;               
            Profit = Lots_New * difference*PointValue; // Профит по УРОВНЮ ТРАЛА рыночного ордера на данном объеме (не путать c OrderProfit)
             if (trlinloss== false ){         // тралим только профит
               if (Profit>MathAbs (Sum_Loss)) // если профит по уровню трала больше суммарного убытка предыдущих поз 
                 if (NormalizeDouble(SL,Digits)< // Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits) && NormalizeDouble(Price,Digits)< NormalizeDouble(Bid-TS,Digits))
              {                           // ..то модифицируем его:
               SL=Bid-TS;                 // Новый его StopLoss
               Modify= true ;               // Назначен к модифи.
              }
            } 
             else {                         // тралим с зоны лоссов
               if (NormalizeDouble(SL,Digits)< // Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits))
              {                           // ..то модифицируем его:
               SL=Bid-TS;                 // Новый его StopLoss
               Modify= true ;               // Назначен к модифи.
              }
             } 
             break ;                         // Выход из switch
         
         
         case 1 :                           // Ордер Sell
             difference = NormalizeDouble (OrderOpenPrice()-(Ask+TS),Digits)/Point;
             Profit = Lots_New * difference*PointValue; // Профит по УРОВНЮ ТРАЛА рыночного ордера на данном объеме (не путать c OrderProfit)             
             if (trlinloss== false ) {           // тралим с уровня профита по ордеру
                 if (Profit>MathAbs (Sum_Loss)) // если профит по уровню трала больше суммарного убытка предыдущих поз            
                   if ((NormalizeDouble(SL,Digits)>   // Если выше желаемого..
                        NormalizeDouble(Ask+TS,Digits)||
                        NormalizeDouble(SL,Digits)== 0 ) && NormalizeDouble(Price,Digits)>NormalizeDouble(Ask+TS,Digits)) //.. или нулевой(!)
              {                           // ..то модифицируем его
               SL=Ask+TS;                 // Новый его StopLoss
               Modify= true ;               // Назначен к модифи.
              }
            }            
             else {                         // тралим с зоны лоссов
          
             if (NormalizeDouble(SL,Digits)> // Если выше желаемого..
               NormalizeDouble(Ask+TS,Digits)||
               NormalizeDouble(SL,Digits)== 0 ) //.. или нулевой(!)
              {                           // ..то модифицируем его
               SL=Ask+TS;                 // Новый его StopLoss
               Modify= true ;               // Назначен к модифи.
              }
            }  
        }                                 // Конец switch
       if (Modify== false )                   // Если его не надо модифи..
         return ;                         // ..то идём по циклу дальше
       bool Ans=OrderModify(Ticket,Price,SL,TP, 0 ); //Модифицируем его!
       //----------------------------------------------------------------------
       if (Ans== false )                     // Не получилось :( 
        {                                 // Поинтересуемся ошибками:
            Print( "Не удалось модифицировать ордер №" ,OrderTicket(), ". Ошибка: " ,GetLastError());
             return ;                       // .. то уходим.
        }
}                                         // Выход из пользов. функции


이 f-iya 트롤 은 교과서에서 가져온 것으로 내 필요에 따라 내가 다시 만들었습니다. 여기에서 주어진 양의 로트에 대한 이익의 계산, 후행 수준 및 이전에 마감된 연속적인 무익한 포지션의 총 손실보다 높은 이익 가치 - 추적이 켜짐 - 유추에 따라 모든 것을 갖게 되며 적용하지 않을 뿐입니다. 여기에는 이익이 있지만 손실은 필요합니다.

매수 및 매도 변수 계산에 주의하십시오.

 double difference; //разность в пунктах    
double Profit; 
PointValue= MarketInfo ( Symbol (),MODE_TICKVALUE)*( MarketInfo ( Symbol (),MODE_POINT)/ MarketInfo ( Symbol (),MODE_TICKSIZE));
모든 것을 같은 방식으로 수행하십시오.
 
그래서 나는 여전히 예금 통화 에서 핍의 가치를 찾는 방법을 이해하지 못합니까?
 
sss2019 :
그래서 나는 여전히 예금 통화에서 핍의 가치를 찾는 방법을 이해하지 못합니까?

계산을 참조하십시오 - 유사하게 수행하십시오. 모두.