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

 
Aleksandr Kononov # :
글쎄, 어떻게 메모리를 확인할 수 있습니까? 어떻게 쓰나요?

메모리에 영향을 줄 수 있고 200개의 표시기를 계산한다고 가정해 보겠습니다. 그러나 일주일 안에 1000개의 표시기가 로드되지 않은 이유를 물을 것입니다. 등 ... 폐쇄 루프 .. 올바른 작업 설정 ..

 
Nikolay Ivanov # :

정지된 코드는 어디에도 적용할 수 없습니다.. 작업은 실행 가능하게 설정해야 합니다. 그리고 코드를 훨씬 더 쉽게 망칠 수 있습니다.. 지표는 빠르게 작동해야 합니다. 초장기 계산을 할 시간이 없습니다.

나는 또한 당신이 무언가를 만들 수 있는 이러한 프레임워크를 알고 싶습니다. 특히 저는 프로그래머가 아니기 때문에 초보자가 이것을 다루기가 어렵습니다. 좋아, 읽을 걸 찾아볼게

 
Aleksandr Kononov # :

나는 또한 당신이 무언가를 만들 수 있는 이러한 프레임워크를 알고 싶습니다. 특히 저는 프로그래머가 아니기 때문에 초보자가 이것을 다루기가 어렵습니다. 좋아, 읽을 걸 찾아볼게

글쎄, 일반적으로 하나의 CCI로 충분합니다. 최대 3개 :) 그리고 200개가 있습니다. 넘지 않는 것이 어렵다는 사실 - 여기에 동의합니다. 이를 위해서는 경험이 필요하고 성공적으로 완료될 올바르고 실행 가능한 작업을 설정해야 합니다. 합리적인 시간에 어렵습니다. 따라서 어디를 파야할지 조언이 필요하면 아이디어를 최적화하고 최소화하는 방향으로 확실히 .. 예를 들어 CCI 기간이 20이고 기간이 21..인 CCI는 거의 동일하고 의미가 없습니다. 둘 다 계산할 때. 기간이 높을수록 효과가 작아지므로 합리적인 금액을 찾아야 합니다. 아름다운 솔루션은 항상 빠르게 작동합니다.

 
Nikolay Ivanov # :

글쎄, 일반적으로 하나의 CCI로 충분합니다. 최대 3개 :) 그리고 200개가 있습니다. 넘지 않는 것이 어렵다는 사실 - 여기에 동의합니다. 이를 위해서는 경험이 필요하고 성공적으로 완료될 올바르고 실행 가능한 작업을 설정해야 합니다. 합리적인 시간에 어렵습니다. 따라서 어디를 파야할지 조언이 필요하면 아이디어를 최적화하고 최소화하는 방향으로 확실히 .. 예를 들어 CCI 기간이 20이고 기간이 21..인 CCI는 거의 동일하고 의미가 없습니다. 둘 다 계산할 때. 기간이 높을수록 효과가 작아지므로 합리적인 금액을 찾아야 합니다. 아름다운 솔루션은 항상 빠르게 작동합니다.

프로파일러가 메모리 소비를 측정하는 데 도움이 된다는 것을 이해합니다. 그럼 최적화를 해보자. 그러나 어쨌든 누군가 그것에 대해 읽을 곳을 알고 있다면 링크를 던져주세요 ..

 

여러분, 안녕하세요!

MA가 앞(양수 값)뿐만 아니라 뒤로(음수 값) 시프트되도록 코드에 추가해야 할 사항을 알려주세요.

다음은 고문의 코드입니다.

 // Параметры советника
input string   sParametersEA = "" ;     // Параметры советника
input double   Lot           = 0.01 ;   // Количество лотов
input int      StopLoss      = 30 ;     // Стоп (SL)
input int      TakeProfit    = 30 ;     // Тейк (TP)
input int      Slippage      = 3 ;       // Проскальзование (в пунктах)
input int      Magic         = 1 ;       // Индентификатор советника
input double   K_Martin1     = 0.01 ;     // Множитель мартин 1
input double   K_Martin2     = 1.9 ;     // Множитель мартин 2
input double   K_Martin3     = 1.4 ;     // Множитель мартин 3
input int      OrdersClose   = 3 ;       // Ограничение лотности мартин1
input int      OrdersClose2  = 5 ;       // Ограничение лотности мартин2
input int      DigitsLot     = 2 ;       // Точность лотности
// Параметры индикатора
input string   sParametersMA = "" ;     // Параметры индикатора
input int      PeriodMA      = 14 ;     // Период мувинга
input int      MovingShift   = 1 ;       // Сдвиг мувинга
// Глобальные переменные
datetime Start,newbar;
double dMA;
double MaxMartinLot;
double MaxMartinLot2;
//+-----------------------------------------------------------------------------------------------+
int OnInit ()
  {
Start          = TimeCurrent ();
MaxMartinLot   = Lot* MathPow ( 1.4 ,OrdersClose);
MaxMartinLot2  = Lot* MathPow (K_Martin2,OrdersClose2);
int Y          = 15 ;
DrawLABEL( "nextlot" , 1 , 5 ,Y, clrLime , "" ); 
Y += 20 ;
DrawLABEL( "currentlot" , 1 , 5 ,Y, clrLime , "" );
Y += 30 ;
return ( INIT_SUCCEEDED );
  }
//+-----------------------------------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {

  }
//+-----------------------------------------------------------------------------------------------+
void OnTick ()
  {
// Получим значение индикатора
   dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
       if (CountOrders()== 0 )
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
       if (bSignalBuy() == true )
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
       if (bSignalSell() == true )
         vOrderOpenSell();
     }
// Пишем какой лот текущий и какой следующий
      DrawLABEL( "nextlot" , 1 , 5 , 0 ,Color1(), StringConcatenate ( "CURRENT LOT: " ,DoubleToStr(LOT(), 2 )));
      DrawLABEL( "currentlot" , 1 , 5 , 0 ,Color2(), StringConcatenate ( "NEXT LOT: " ,DoubleToStr(LOT(), 2 ))); 
 
   }
 
законопослушный гражданин # :

여러분, 안녕하세요!

MA가 앞(양수 값)뿐만 아니라 뒤로(음수 값) 시프트되도록 코드에 추가해야 할 사항을 알려주세요.

다음은 고문의 코드입니다.

원하는 음수 값을 시프트에 추가하되 값 + 시프트가 0보다 작지 않도록 합니다.

 
ALEKSANDR SOKOLOV # :

원하는 음수 값을 시프트에 추가하되 값 + 시프트가 0보다 작지 않도록 합니다.

감사합니다. 시도하겠습니다.

 

안녕하세요.

코드에 대한 도움말, 예가 있을 수 있습니다.
일:

다른 방향으로 다른 로트가 있는 여러 미결 주문이 있습니다. 그들 중 하나는 이익을 내며 20이라고 가정해 보겠습니다. 그러나 마이너스 이익이 있는 미결 상태가 있습니다. 예를 들어 -55와 0.05랏이 있다고 가정해 보겠습니다. 나는 드로다운을 줄이기 위해 긍정적으로 닫힌 주문의 이익 금액에 대해 부정적인 주문의 일부를 닫고 싶습니다.

while 문을 기반으로 작성하려고 했지만 문제가 발생했습니다.

미리 감사드립니다.

 

안녕하세요, 이 코드는 Fedoseev의 책에서 가져왔습니다. 표시기가 창에 그려지지 않은 이유는 로그에 실행 중이고 컴파일할 때 오류가 없으며 추가 창이 열립니다(비어 있음). 이것은 책의 코드이며 내 결과는 정확히 같은. 뭐가 문제 야?

//+----------------------------------------------- --------------------+

//| 015 Symbol.mq5 |

//+----------------------------------------------- --------------------+

#property copyright "드미트리 페도세예프"

#속성 링크 "mailto:for-good-letter@yandex.ru"

#속성 버전 "1.00"

#속성 표시기_분리_창

#속성 표시기_버퍼 4

#property indicator_plots 1

//--- 플롯 바

#property indicator_label1 "막대"

#property indicator_type1 DRAW_CANDLES

#property indicator_color1 clrGray,clrBlue,clrRed

#속성 표시기_스타일1 STYLE_SOLID

#속성 표시기_너비1 1

//--- 입력 매개변수


입력 stringsymbol="";

입력 bool drawBars=거짓;


문자열 기호;


//--- 표시기 버퍼

이중 barBuffer1[];

이중 barBuffer2[];

이중 barBuffer3[];

이중 barBuffer4[];

//+----------------------------------------------- --------------------+

//| 사용자 지정 표시기 초기화 기능 |

//+----------------------------------------------- --------------------+

int OnInit()

{

기호 = 기호;

StringTrimLeft(기호);

StringTrimRight(sym);

if(sym=""){

기호 = 기호();

}

if(!SymbolSelect(sym,true)){

Alert("알 수 없는 기호 ",sym);

반환(INIT_FAILED);

}

if(드로우바){

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_BARS);

}

또 다른{

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_CANDLES);

}

//--- 표시기 버퍼 매핑

SetIndexBuffer(0,barBuffer1,INDICATOR_DATA);

SetIndexBuffer(1,barBuffer2,INDICATOR_DATA);

SetIndexBuffer(2,barBuffer3,INDICATOR_DATA);

SetIndexBuffer(3,barBuffer4,INDICATOR_DATA);

//---

반환(INIT_SUCCESSED);

}


무효 OnDeinit(const int r){

논평("");

이벤트킬 타이머();

}

//+----------------------------------------------- --------------------+

//| 사용자 지정 표시기 반복 기능 |

//+----------------------------------------------- --------------------+

int OnCalculate(const int rate_total,

const int prev_calculated,

const 날짜/시간 및 시간[],

const 이중 및 열기[],

const 더블 & 하이[],

const 더블 & 로우[],

const 이중 및 닫기[],

const long &tick_volume[],

const 긴 볼륨[],

const int &spread[])

{

int bars=Bars(sym,Period());

if(막대==0){

Comment("시간대 구성 ",sym,"...");

이벤트 세트 타이머(1);

리턴(0);

}

정수 시작;

if(이전_계산==0){

논평("");

이벤트킬 타이머();

날짜/시간 tm[1];

if(CopyTime(sym,Period(),bars-1,1,tm)==-1){

리턴(0);

}

시작=0;

for(;start<rates_total;start++){

if(시간[시작]>=tm[0]){

부서지다;

}

}

}

또 다른{

시작=prev_calculated-1;

}

MqlRates r[1];

for(int i=start;i<rates_total;i++){

if(CopyRates(sym,Period(),time[i],1,r)==-1){

리턴(0);

}

barBuffer1[i]=r[0].open;

barBuffer2[i]=r[0].높음;

barBuffer3[i]=r[0].낮음;

barBuffer4[i]=r[0].닫기;

}

반환(요금 합계);

}


무효 OnTimer()

{

ChartSetSymbolPeriod(0,Symbol(),Period());

}


//+----------------------------------------------- --------------------+

파일:
 
MatveySt # :

안녕하세요, 이 코드는 Fedoseev의 책에서 가져왔습니다. 표시기가 창에 그려지지 않은 이유는 로그에 실행 중이고 컴파일할 때 오류가 없으며 추가 창이 열립니다(비어 있음). 이것은 책의 코드이며 내 결과는 정확히 같은. 뭐가 문제 야?


Alt es는 코드를 붙여넣습니다.

그리고 칠면조를 던질 때 악기를 소개합니까?