MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1937

 
VIREDS # :
mql4를 아는 사람들에게 좋은 시간. 어느 방향에서든 수익성 있는 포지션으로 인해 시리즈에서 가장 멀리 떨어진 주문의 백분율을 마감하는 기능이 있습니다. 이 기능을 개선하는 데 도움이 정말 필요합니다! 즉, 하나의 먼 주문 대신 시리즈의 나머지 모든 주문(어느 방향으로든 수익성 있는 위치로 인해)을 부분적으로 마감합니다. 미리 감사드립니다!
이 기능 때문에 2달 동안 고생했습니다 . 뉘앙스가 너무 많습니다. 특히 이 라인은
 ProfitPer=OrderProfit()+OrderCommission()+OrderSwap(); //ПРОФИТ ОДНОГО ОРДЕРА

그리드에 많은 주문이 있을 때 닫을 때 모든 것을 0으로 닫아야 하지만 총 손실을 줍니다. 결과적으로 커미션과 스왑을 모두 제거했습니다.

 double spreadLoss =(MarketInfo( _Symbol ,MODE_TICKVALUE)* MarketInfo( _Symbol , MODE_SPREAD ));
 
그런 다음 함수에서 각 주문에 대해 lot/lotstep을 곱할 수 있지만 방금 승수를 만들었습니다.
 
그리고 OrderClose() 전에 그들은 (!)
 
안녕하세요. 현재 상황에 따른 MQL4 서비스 결제 방법을 알려주세요.
 

좋은 오후에요 여러분. 신호가 나타날 때 차트에 화살표를 그리는 표시기가 있습니다. 이 모든 화살표는 차트의 기록에 따라 배열되어 있으며 신호의 잠재력을 평가할 수 있습니다.

표시 화살표가 있는 차트.

나는 그것이 신호의 출현을 알릴 수 있도록 경고를 고정하려고했습니다. 신호가 나타날 때 화살표를 그리는 표시기에서 기능을 찾았습니다.

 void SetDivergenceUP( string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr= iATR (sy, PERIOD_CURRENT , 14 ,index);
   color line_color= clrNONE ;
   string nm= "" , gv_name= "" ;
   if (name_ind== "AO" ) {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if (name_ind== "MACD" ) {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if (name_ind== "RSI" ) {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy, PERIOD_CURRENT ,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy, Period (),index)+atr*shiftArrow;
   if (ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
       GlobalVariableSet (gv_name,- 1.0 );
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr= Bars (sy, PERIOD_CURRENT , TimeCurrent (),last_prc_tm);
   nm=Prefix+ "P" +name_ind+ "divUpper" + TimeToString (time_b);
   SetTLine( 0 ,nm,line_color, 0 ,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+ " " +name_ind+(work_period== Period ()? "" : "\nна периоде " +GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if (wnd> 0 ) {
      nm=Prefix+name_ind+ "divUpper" + TimeToString (time_b);
      SetTLine( 0 ,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+ " " +(work_period== Period ()? "" : "\nна периоде " +GetNameTF(work_period)));
      }

}


  이 기능의 끝에 Alert를 발행하는 라인을 추가했습니다. 추가된 라인을 컬러로 강조 ;-)

 void SetDivergenceUP( string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr= iATR (sy, PERIOD_CURRENT , 14 ,index);
   color line_color= clrNONE ;
   string nm= "" , gv_name= "" ;
   if (name_ind== "AO" ) {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if (name_ind== "MACD" ) {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if (name_ind== "RSI" ) {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy, PERIOD_CURRENT ,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy, Period (),index)+atr*shiftArrow;
   if (ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
       GlobalVariableSet (gv_name,- 1.0 );
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr= Bars (sy, PERIOD_CURRENT , TimeCurrent (),last_prc_tm);
   nm=Prefix+ "P" +name_ind+ "divUpper" + TimeToString (time_b);
   SetTLine( 0 ,nm,line_color, 0 ,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+ " " +name_ind+(work_period== Period ()? "" : "\nна периоде " +GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if (wnd> 0 ) {
      nm=Prefix+name_ind+ "divUpper" + TimeToString (time_b);
      SetTLine( 0 ,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+ " " +(work_period== Period ()? "" : "\nна периоде " +GetNameTF(work_period)));
      }
        Alert ( "ДИВЕРГЕНЦИЯ НА " + Symbol ());
}

lert가 작동했고 테스터에서 모든 것이 정상입니다. 그러나 터미널을 시작할 때 차트에 표시기가 던지면 히스토리 J 에 화살표가있는만큼 많은 소리 신호와 메시지를 제공 합니다. 수행해야 할 작업 및 마지막 경고가 발생할 때만 경고를 발행하는 방법 터미널이 켜져 있을 때 신호가 도착하고,   역사에 화살에 침묵했다?
 
DanilaMactep # :

좋은 오후에요 여러분. 신호가 나타날 때 차트에 화살표를 그리는 표시기가 있습니다. 이 모든 화살표는 차트의 기록에 따라 배열되어 있으며 신호의 잠재력을 평가할 수 있습니다.

나는 그것이 신호의 출현을 알릴 수 있도록 경고를 고정하려고했습니다. 신호가 나타날 때 화살표를 그리는 표시기에서 기능을 찾았습니다.


  이 기능의 끝에 Alert를 발행하는 라인을 추가했습니다. 추가된 라인을 컬러로 강조 ;-)

lert가 작동했고 테스터에서 모든 것이 정상입니다. 그러나 터미널을 시작할 때 차트에 표시기가 던지면 히스토리 J 에 화살표가있는만큼 많은 소리 신호와 메시지를 제공 합니다. 수행해야 할 작업 및 마지막 경고가 발생할 때만 경고를 발행하는 방법 터미널이 켜져 있을 때 신호가 도착하고,   역사에 화살에 침묵했다?
첫 번째 또는 0개의 막대에서만 경고합니다.
 

동료 - 조직 문제:

Mt4 및 MT 5에서 exp를 테스트하고 최적화하는 내 컴퓨터의 C 드라이브 여유 공간이 작아졌습니다... 220개 중에서 30GB가 제 생각에 남아 있습니다...

나는 그 장소가 이전에 작업한 로봇이나 테스트 중인 로봇의 로그와 MT 4와 MT 5 모두에서 다른 터미널의 다른 기호의 역사로 점유되었다고 생각합니다. 관심이 있습니다.

기호 기록(기호별 눈금)을 지우고 터미널의 다른 폴더에 로그인하는 방법(많지 않음, 약 5개).

이전 MT 4와 마찬가지로 magic clear.bat 파일이 있었습니다.

일반적으로 기호의 기록(틱)과 다른 폴더의 로그인에서 장소를 청소하는 옵션이 필요합니다. 바탕 화면의 모든 바로 가기는 MT 4 및 MT5용입니다. 일종의...

일반적으로 과거 테스트(기호 틱의 기록) 및 거래(해당 로그)에서 디스크 공간을 비웁니다.

적어도 읽을 위치, 정리 방법 및 MT 4 및 MT5 모두에서 삭제할 폴더 - 위치는 어디입니까?

고마워.

 

말해 주세요.

Expert Advisor는 iCustom을 통해 표시기를 사용하며, 로그의 각 눈금 에 이러한 오류가 있습니다.

지표를 편집하지 않고 해결할 수 있습니까? 그렇다면 어떻게?

 
ALEKSANDR SOKOLOV 각 눈금 에 이러한 오류가 있습니다.

지표를 편집하지 않고 해결할 수 있습니까? 그렇다면 어떻게?

EA와 별도로 시작된 표시기가 이러한 레코드를 생성하지 않는 경우 iCustom()을 통해 호출할 때 EA에서 표시기 매개변수를 지정하는 정확성을 확인하십시오.

 
Roman Shiredchenko 터미널의 다른 폴더에 로그인하는 방법(많지 않음, 약 5개).

이전 MT 4와 마찬가지로 magic clear.bat 파일이 있었습니다.

일반적으로 기호의 기록(틱)과 다른 폴더의 로그인에서 장소를 청소하는 옵션이 필요합니다. 바탕 화면의 모든 바로 가기는 MT 4 및 MT5용입니다. 일종의...

일반적으로 과거 테스트(기호 틱의 기록) 및 거래(해당 로그)에서 디스크 공간을 비웁니다.

적어도 읽을 위치, 정리 방법 및 MT 4 및 MT5 모두에서 삭제할 폴더 - 위치는 어디입니까?

고마워.

컴퓨터의 수명과 시스템 로그가 Intel 또는 다른 제조업체의 로컬 폴더, 템포 폴더 및 서비스 폴더에서 정리된 시기. 현재 브라우저와 사무실이 관리자 아래에서 주기 청소기로 거의 100 공연을 중단한 10년 된 컴퓨터에서. 내 Intel 폴더에서 25GB를 찾았습니다.

히스토리 폴더에 있는 티키. 예를 들어 모든 기호에 대한 바이낸스에는 25GB가 있었습니다. 그리고 일반 폴더와 마이크로 폴더에서 로그를 확인합니다. 로그를 삭제해도 아무 영향도 미치지 않습니다. 그러나 진드기가 철거되면 필요한 진드기가 로드될 때까지 기다려야 할 수도 있습니다.