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

 
4가지를 이야기하는 것과 같습니다. 예제는 서로 다른 시간에 작성된 것으로 보이므로 서로 다른 기능을 사용하여 오해의 소지가 있습니다.
 
Artyom Trishkin :

mql5 튜토리얼을 어디에서 찾았습니까?

Google 규칙: Timur Sergeyevich Mashnin " MQL5 프로그래밍 언어: MetaTrader 5 거래 플랫폼의 고급 사용"

예, MQL4 Metaquotes에 따르면 공식적으로 교과서 Sergey Kovalev를 발표했습니다. 알고리즘 언어 MQL4로 프로그래밍

 
psyman :
4가지를 이야기하는 것과 같습니다. 예제는 서로 다른 시간에 작성되었기 때문에 서로 다른 기능을 사용하여 오해의 소지가 있는 것 같습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL4에 대한 모든 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론

Artyom Trishkin , 2016.11.09 22:50

이 스레드에서는 새로운 MQL4에서 프로그래밍을 이해하고 배우고 자 하는 사람들에게 도움을 드리고자 합니다. MQL5로 쉽게 전환하기를 원합니다 . 언어가 매우 유사합니다.

여기에서 작업, 이를 해결하기 위한 알고리즘, 그리고 어떤 방식으로든 MT용 프로그래밍과 관련된 모든 질문에 대해 논의할 수 있습니다.

포럼의 다른 경험 많은 회원이 문제 해결에 참여하고 스레드가 모든 사람의 관심을 끌 수 있기를 바랍니다.


 
Igor Makanu :

Google 규칙: Timur Sergeyevich Mashnin " MQL5 프로그래밍 언어: MetaTrader 5 거래 플랫폼의 고급 사용"

예, MQL4 Metaquotes에 따르면 공식적으로 교과서 Sergey Kovalev를 발표했습니다. 알고리즘 언어 MQL4로 프로그래밍

그리고 여기 누가 이 티무르에 대해 알고 있습니까?

결국, 한 남자는 다음과 같이 씁니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL4에 대한 모든 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론

싸이맨 , 2018.10.15 19:56


이것은 Medvedev가 "화강암 주조"라고 말한 것처럼 교과서의 맨 처음에 작성되어야 합니다 :-)

무슨 교과서? 도움말이 있고 기사가 있고 포럼이 있지만 교과서는 없습니다. 그리고 거기에 무엇이 필요한지, 무엇을 입을지 설명하는 것은 교과서의 저자에게 달려 있으며, 여전히 제3자 리소스에서 찾고 찾아야 합니다. 저것들. 주장 은 근거가 없으며 MetaQuotes에 대한 것이 아닙니다.
 

= 주장 이 근거가 없다


이 스레드는 주장을 해야 하는 곳이 아니라고 생각하지만 정확성을 원하면 여기에서 튜토리얼이라는 단어를 가져왔습니다. https://book.mql4.com/ru

처음부터 OnInit에 대해 아무 말도 하지 않고 init https://book.mql4.com/en/programm/structure 를 사용하기 시작하고 다른 예제에서 계속 진행합니다.

Учебник по MQL4
Учебник по MQL4
  • book.mql4.com
В настоящее время персональный компьютер стал незаменимым помощником в жизни каждого человека. Благодаря развитию Интернета и увеличению мощности современных компьютеров открылись новые возможности во многих областях деятельности. Ещё десять лет назад торговля на финансовых рынках была доступна только банкам и узкому кругу специалистов. Сегодня...
 
psyman :

= 주장 이 근거가 없다


이 스레드는 주장을 해야 하는 곳이 아니라고 생각하지만 정확성을 원하면 여기에서 튜토리얼이라는 단어를 가져왔습니다. https://book.mql4.com/ru

처음부터 OnInit에 대해 아무 말도 하지 않고 init https://book.mql4.com/en/programm/structure 를 사용하기 시작하고 다른 예제에서 계속 진행합니다.

알았습니다. 이 튜토리얼은 오후에 백년 된 것입니다 :)

나는 당신이 그것에 대해 알지 못할 수도 있음을 이해합니다.

일반적으로 소개하는 지인에게 (아마도 누군가가) 필요합니다. 글을 쓴 후 많은 세월이 흘렀고 이제 그것을 읽은 후 포럼에서 무언가에 대해 질문하는 것이 좋습니다.

음, "반드시", "반드시", "하지 않았음", "보고하지 않음" 등을 제외하고 시도하십시오. ...

mql4 및 mql5에 대한 완전하고 깊은 지식에 필요한 모든 것 - 모든 것이 풍부하고 모든 취향에 맞는 이 리소스에 있습니다.

 

안녕하세요. Murrey Lines 지표를 이해하도록 도와주세요. (아래 코드) .그의 데이터를 함수를 통해 어드바이저에서 사용하고 싶었습니다.

iCustom., 첫 번째 막대에 있는 표시기의 첫 번째 줄 값을 반환 - " double Divb1=iCustom(Symbol(), PERIOD_CURRENT ,"Murrey-levels-system",P,StepBack,1,1); " Divb1을 시장 진입 조건으로 하지만 테스트 시 이 라인을 고려하지 않고 포지션을 오픈합니다.(1 대신 인디케이터 라인의 인덱스를 넣을 수 있으며 동일한 위치에서 주문이 열립니다. If(Bid< =Divb1) 조건

아마도 함수 매개변수의 오류일 것입니다. 하지만 어떤 매개변수인지 알 수 없습니다.

//| |
//| Copyright © 1999-2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.ru |
//+----------------------------------------------- --------------------+
#속성 표시기_차트_창
//----
외부 정수 P=64;
외부 intStepBack=0;
//----
이중 dmml=0,dvtl=0,sum =0,v1=0,v2=0,mn=0,mx=0,x1=0,x2=0,x3=0,x4=0,x5=0,x6 =0,y1=0,y2=0,y3=0,y4=0,y5=0,y6=0,옥타브=0,프랙탈=0,범위 =0,finalH =0,finalL =0,mml[13 ];
문자열 ln_txt[13],
버프_str="";
정수
bn_v1=0,
bn_v2=0,
OctLinesCnt=13,
mml_thk=8,
mml_clr[13],
mml_shft=3,
n시간=0,
CurPeriod=0,
n자리=0,
나는 = 0;
//+----------------------------------------------- --------------------+
//| |
//+----------------------------------------------- --------------------+
정수 초기화()
{
ln_txt[0]="[-2/8]P";
ln_txt[1] ="[-1/8]P"; ln_txt[2] ="지원 [0/8]";
ln_txt[3] ="STOP_RETURN [1/8]";
ln_txt[4] ="ROTATE_REVOLT [2/8]";
ln_txt[5] ="CHANNEL_BOTTOM [3/8]";
ln_txt[6] ="RESISTANCE_SUPPORT [4/8]";
ln_txt[7] ="채널 상단 [5/8]";
ln_txt[8] ="ROTATE_REVOLT [6/8]";
ln_txt[9] ="STOP_RETURN [7/8]";
ln_txt[10]="저항 [8/8]";
ln_txt[11]="[+1/8]P";// "오버슈트[+1/8]";
ln_txt[12]="[+2/8]P";// "극단적으로 오버슛 [+2/8]";
//----
mml_shft=25;
mml_thk=3;
//----
mml_clr[0] = 마젠타색;
mml_clr[1]=분홍색;
mml_clr[2]=파란색;
mml_clr[3]=주황색;
mml_clr[4] =빨간색;
mml_clr[5] =올리브드랍;
mml_clr[6]=파란색;
mml_clr[7]=올리브드랍;
mml_clr[8] =빨간색;
mml_clr[9]=주황색;
mml_clr[10]=파란색;
mml_clr[11]=분홍색;
mml_clr[12]=자홍색;
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| |
//+----------------------------------------------- --------------------+
정수 초기화()
{
논평(" ");
for(i=0;i<OctLinesCnt;i++)
{
버프_str="mml"+i;
개체 삭제(buff_str);
버프_str="mml_txt"+i;
개체 삭제(buff_str);
}
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| |
//+----------------------------------------------- --------------------+
정수 시작()
{
if((nTime!=시간[0]) || (CurPeriod!=Period()))
{
bn_v1=최저(NULL,0,MODE_LOW,P+스텝백,0);
bn_v2=최고(NULL,0,MODE_HIGH,P+스텝백,0);
//----
v1=낮음[bn_v1];
v2=높음[bn_v2];
//----
if(v2<=250000 && v2>25000 )
프랙탈=100000;
또 다른
if(v2<=25000 && v2>2500 )
프랙탈=10000;
또 다른
if(v2<=2500 && v2>250 )
프랙탈=1000;
또 다른
if(v2<=250 && v2>25 )
프랙탈=100;
또 다른
if(v2<=25 && v2>12.5 )
프랙탈=12.5;
또 다른
if(v2<=12.5 && v2>6.25)
프랙탈=12.5;
또 다른
if(v2<=6.25 && v2>3.125 )
프랙탈=6.25;
또 다른
if(v2<=3.125 && v2>1.5625 )
프랙탈=3.125;
또 다른
if(v2<=1.5625 && v2>0.390625 )
프랙탈=1.5625;
또 다른
if(v2<=0.390625 && v2>0)
프랙탈=0.1953125;
범위=(v2-v1);
합계=MathFloor(MathLog(프랙탈/범위)/MathLog(2));
옥타브=프랙탈*(MathPow(0.5,합));
mn=MathFloor(v1/옥타브)*옥타브;
if((mn+옥타브)>v2 )
mx=mn+옥타브;
또 다른
mx=mn+(2*옥타브);
if((v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) )
x2=mn+(mx-mn)/2;
그렇지 않으면 x2=0;
if((v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) )
x1=mn+(mx-mn)/2;
그렇지 않으면 x1=0;
if((v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
x4=mn+3*(mx-mn)/4;
그렇지 않으면 x4=0;
if((v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
x5=mx;
그렇지 않으면 x5=0;
if((v1>=(mn+(mx-mn)/8))&& (v2<=(7*(mx-mn)/8+mn))&& (x1==0) && (x2==0) && (x4==0) && (x5==0) )
x3=mn+3*(mx-mn)/4;
그렇지 않으면 x3=0;
if((x1+x2+x3+x4+x5) ==0 )
x6=mx;
그렇지 않으면 x6=0;
최종H=x1+x2+x3+x4+x5+x6;
if(x1>0 )
y1=mn;
그렇지 않으면 y1=0;
if(x2>0 )
y2=mn+(mx-mn)/4;
그렇지 않으면 y2=0;
if(x3>0 )
y3=mn+(mx-mn)/4;
그렇지 않으면 y3=0;
if(x4>0 )
y4=mn+(mx-mn)/2;
그렇지 않으면 y4=0;
if(x5>0 )
y5=mn+(mx-mn)/2;
그렇지 않으면 y5=0;
if((최종H>0) && ((y1+y2+y3+y4+y5)==0) )
y6=mn;
그렇지 않으면 y6=0;
최종L=y1+y2+y3+y4+y5+y6;
for( i=0; i<OctLinesCnt; i++)
{
mml[i]=0;
}
dmml=(최종H-최종L)/8;
mml[0] =(최종L-dmml*2); //-2/8
for( i=1; i<OctLinesCnt; i++)
{
mml[i]=mml[i-1] + dmml;
}
for( i=0; i<OctLinesCnt; i++ )
{
버프_str="mml"+i;
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_HLINE, 0, 시간[0], mml[i]);
ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(buff_str, OBJPROP_COLOR, mml_clr[i]);
ObjectMove(buff_str, 0, 시간[0], mml[i]);
}
또 다른
{
ObjectMove(buff_str, 0, 시간[0], mml[i]);
}
버프_str="mml_txt"+i;
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_TEXT, 0, 시간[mml_shft], mml_shft);
ObjectSetText(buff_str, ln_txt[i], 8, "Arial", mml_clr[i]);
ObjectMove(buff_str, 0, 시간[mml_shft], mml[i]);
}
또 다른
{
ObjectMove(buff_str, 0, 시간[mml_shft], mml[i]);
}
}
nTime=시간[0];
CurPeriod= 마침표();
}
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
 
Anatoliy Ryzhakov :

안녕하세요. 표시기 도움말...

아무도 그런 신발을 보지 않을 것입니다.


 

= 일반적으로 - 소개하는 지인에게 (아마도 누군가가) 필요합니다.


좋은 예와 함께 더 현대적인 것이 있습니까?


= "해야 한다", "해야 한다", "하지 않았다", "말하지 않았다"는 피하십시오.


당신은 나를 다른 사람과 혼동하는 것 같습니다. 나는 그 말을 사용하지 않았다.

 

나는 지표를 작성하는 방법을 이해하지 못합니다, 문제가 무엇인지 설명?

active_1active_2 자산 간의 가격 차이를 보여주는 라인을 작성해야 합니다.

효과가있다

또한 기간의 평균 ma_period 가 이 선을 따라 표시되어야 합니다. 이것은 이미 문제이며 표시되지 않습니다.

 #property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots 2
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_color1 clrGreen , clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_type2 DRAW_LINE
#property indicator_color2 clrWhite
#property indicator_style2 STYLE_SOLID
#property indicator_width1 1
#include <MovingAverages.mqh>

input string active_1 = "GBPNZD.m" ;
input string active_2 = "GBPAUD.m" ;
input ENUM_TIMEFRAMES timeframe = PERIOD_H1 ;
input int ma_period = 30 ;

double firstBuffer[], secondBuffer[], colorBuffer[], dataBuffer[], maBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 , dataBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 , maBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 2 , colorBuffer, INDICATOR_COLOR_INDEX );
   SetIndexBuffer ( 3 , firstBuffer, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 4 , secondBuffer, INDICATOR_CALCULATIONS );
   PlotIndexSetInteger ( 1 , PLOT_DRAW_BEGIN , ma_period);
   IndicatorSetString ( INDICATOR_SHORTNAME , "DifferenceCurrency " +active_1+ "  " +active_2);
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
//---

   CopyClose (active_1,timeframe, 0 ,rates_total,firstBuffer);
   CopyClose (active_2,timeframe, 0 ,rates_total,secondBuffer);
   int first, bar;
   if (prev_calculated == 0 ) first = begin; else first = prev_calculated - 1 ;
   for (bar = first; bar<rates_total; bar++){
      dataBuffer[bar] = firstBuffer[bar]-secondBuffer[bar];
      maBuffer[bar] = SimpleMA(bar, ma_period, dataBuffer);
   }
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+