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

 

내 아이디어는 다음과 같습니다.

주문을 열면 마감된 잔액에 따라 다릅니다.

잔액이 0보다 작으면 손실을 수정하고 기억하고, 0보다 크면 처음부터 작업을 시작합니다.

손실이 0보다 작으면 이를 수정하고 변수에 할당했습니다. 예: 마이너스

빼기 = OrderProfit(-45센트);

AccountAqviti + 마이너스 + 내 가치(내 양심)

다음 순서로 추가:

이 주문의 이익이 AccountAqviti + 마이너스 + 내 가치(내 양심)보다 크면 주문을 닫고 그렇지 않은 경우 0보다 크면 다음을 수정합니다.

(AccountAqviti + OrderProfit) - (AccountAqviti + 마이너스 + 내 가치(내 양심)) = 마이너스

빼기 >= 0이면 빼기 = 0입니다.

 
belck :

내 아이디어는 다음과 같습니다.


아이디어가 있으면 작업 서비스에 문의해야하지만 여기에서는 특정 코드로 특정 상황을 해결하는 것이 관례입니다.
 

안녕하세요! MACD, AO 및 이와 유사한 표시기에 채널을 표시하는 표시기를 만들고 싶습니다. 이 지표는 기본 지표(MACD, AO 등)의 창에 중첩되며 0 위와 아래에 평행선으로 그려집니다. 이 선은 최고점(0 초과) 및 최저점(아래)의 평균값으로 정의됩니다. 0) 지정된 기간 동안.
AO 표시기의 예를 사용하여 계획을 구현하려고 하지만 뭔가 잘 되지 않습니다.
연산:
표시기 판독값을 배열에 쓰고,
우리는 정점/저점을 찾기 위해 이 배열을 실행합니다.
특정 배열에 씁니다.
우리는 최고점의 평균값을 찾은 다음 최저점을 찾습니다.
결과 값을 표시기 버퍼 에 할당합니다.
이 단계에서 코드는 표시기의 채널(0에 고정)을 정확히 결정하지 않고 최고점의 평균과 최저점의 평균을 결정합니다.
봉우리와 저점의 정의는 코드에서 제거하고 함수로 형식화할 수 있지만 지금까지는 이대로 남아 있어 본질이 바뀌지 않습니다.
문제:
1. 말기 동결(중요)
2. 라인은 평균으로 표시되지 않으며 일정 기간 동안 최대/최소값으로 구합니다.
이해하는 데 오랜 시간이 걸렸지만 문제의 원인을 이해할 수 없습니다. 내 코드를 수정하는 데 도움을 주거나 유사한 문제가 논의되거나 기본 코드가 제공되는 링크를 제공하면 더 이해하겠습니다. 미리 감사드립니다.

 int start(){
     int limit= Bars - IndicatorCounted ();
     for ( int i=limit;i>= 0 ;i--){
//     if (IsNewBar()){
       int j= 0 ;
       for ( int d= 2 ;d<=period- 1 ;d++){         
             ArrayResize (AO,j+ 1 ); 
             AO[j]=AO(d);                             // Запишем данные инд. в цикле в массив
             Print ( "АО-" ,AO[j], "-" ,d, "-" ,i);
             j++;
       }             
       int k_up= 0 ,k_dw= 0 ; double SDw= 0 ,SUp= 0 ,P1= 0 ,P2= 0 ;      
       //собираем экстремумы выше 0
       for ( int p= 4 ;p<=period- 1 ; p++){          
         if (AO[p]>AO[p+ 1 ] && AO[p]>AO[p- 1 ] 
            && AO[p+ 1 ]>AO[p+ 2 ]
            && AO[p+ 2 ]>AO[p+ 3 ]
            && AO[p+ 3 ]> 0
            && AO[p- 1 ]>AO[p- 2 ]
            && AO[p- 2 ]>AO[p- 3 ]
            && AO[p- 3 ]> 0 ){                           // Нашли макс
             ArrayResize (Up, k_up+ 1 );                 // Размер массива донышек под кол-во найденных донышек
            Up[k_up]=AO(p);                           // Заносим значение пика в массив                 
             Print ( "значение пика-" ,Up[k_up], "-" ,p);           
            SUp=SUp+Up[k_up];
            P1=SUp/(k_up+ 1 );            
            k_up++;                                   // Увеличиваем индекс массива донышек                                 
         }
         //собираем впадины ниже 0
         if (AO[p]<AO[p+ 1 ] && AO[p]<AO[p- 1 ] 
            && AO[p+ 1 ]<AO[p+ 2 ]
            && AO[p+ 2 ]<AO[p+ 3 ]
            && AO[p+ 3 ]< 0
            && AO[p- 1 ]<AO[p- 2 ]
            && AO[p- 2 ]<AO[p- 3 ]
            && AO[p- 3 ]< 0 ){                           // Нашли мин
             ArrayResize (Dw, k_dw+ 1 );                 // Размер массива донышек под кол-во найденных донышек
            Dw[k_dw]=AO[p];                           // Заносим значение пика в массив                                            
             Print ( "значение донышка-" ,Dw[k_dw], "-" ,p);                                           
            SDw=SDw+Dw[k_dw];
            P2=SDw/(k_dw+ 1 );           
            k_dw++; // Увеличиваем индекс массива донышек   
         }         
       }
       level1[i]=P1;
       level2[i]=P2;
    }
     return ( 0 );
}
//+------------------------------------------------------------------+
double AO( int a){ double AO= iAO ( NULL , 0 , a);
     return (AO);
}
 
감사하다! 많은 도움이 되었습니다!
 
LOA :

안녕하세요!
문제:

1. 말기 동결(중요)

 for ( int d= 2 ;d<=period- 1 ;d++){         
             ArrayResize (AO,j+ 1 ); 


루프에서 배열의 크기를 늘리는 것은 잔인합니다. 그래서 우리는 중단합니다. 크기에 맞게 한 번 확대합니다. 또는 시계열을 즉시 사용하십시오.


PS 개인 메시지 참조

 

string 유형 의 변수를 반복하는 방법은 무엇입니까?

예시

   double A[ 3 ];
   A[ 0 ]= iClose ( "EURUSD" , 0 , 0 );
   A[ 1 ]= iClose ( "GBPUSD" , 0 , 0 );
   A[ 2 ]= iClose ( "AUDUSD" , 0 , 0 );
이 구성을 사이클로 대체하는 방법은 무엇입니까?
 
안녕하세요, 오픈 오더의 이익이 1포인트인 경우 이 오더를 청산하는 조건을 작성하는 방법을 알려주세요.
 
first_may :
안녕하세요, 오픈 오더의 이익이 1포인트인 경우 이 오더를 청산하는 조건을 작성하는 방법을 알려주세요.

기능을 사용하여.

https://www.mql5.com/ru/forum/131859/page3#434225

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в пунктах         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetProfitOpenPosInPoint( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double p;
   int     i, k= OrdersTotal (), pr= 0 ;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
         if (mn< 0 || OrderMagicNumber ()==mn) {
          p= MarketInfo ( OrderSymbol (), MODE_POINT);
           if (p== 0 ) if ( StringFind ( OrderSymbol (), "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
           if ( OrderType ()==OP_BUY) {
            pr+=( MarketInfo ( OrderSymbol (), MODE_BID)- OrderOpenPrice ())/p;
          }
           if ( OrderType ()==OP_SELL) {
            pr+=( OrderOpenPrice ()- MarketInfo ( OrderSymbol (), MODE_ASK))/p;
          }
        }
      }
    }
  }
   return (pr);
}
 
Rorschach :

문자열 변수를 반복하는 방법?

예시

이 구성을 사이클로 대체하는 방법은 무엇입니까?

   string asSymbols[ 3 ] = { "EURUSD" , "GBPUSD" , "AUDUSD" };
   double A[ 3 ] = { 0 };
   for ( int i = 0 ; i < ArraySize( sSymbols) && i < ArraySize( A); i++) A[i]= iClose (asSymbols[ i ], 0 , 0 );
 
Zhunko :



감사해요