MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 663

 
Dörtten bahsetmek gibi. Örnekler farklı zamanlarda yazılmış gibi görünüyor, bu nedenle yanıltıcı olan farklı işlevlerin kullanılması.
 
Artyom Trishkin :

mql5 eğitimini nereden buldunuz?

Google kuralları: Timur Sergeyevich Mashnin " MQL5 programlama dili: MetaTrader 5 işlem platformunun gelişmiş kullanımı"

ve böylece, evet, MQL4'e göre Metaquotes resmi olarak Sergey Kovalev ders kitabını duyurdu. Algoritmik dilde programlama MQL4

 
psyman :
Dörtten bahsetmek gibi. Örnekler farklı zamanlarda yazılmış gibi görünüyor, bu nedenle yanıltıcı olan farklı işlevlerin kullanılması.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MQL4, yardım ve algoritmalar ve kodlar hakkında herhangi bir acemi sorusu

Artyom Trishkin , 2016.11.09 22:50

Bu başlıkta, yeni MQL4'te programlamayı gerçekten anlamak ve öğrenmek isteyenler için yardımıma başlamak istiyorum. ve kolayca MQL5'e geçmek istiyor - diller çok benzer.

Burada görevleri, bunları çözmek için algoritmaları ve bu arada, MT için programlama ile ilgili soruları bir şekilde tartışmak mümkün olacak.

Umarım forumumuzun diğer deneyimli üyeleri sorunların çözümüne gelir ve konu herkesin ilgisini çeker.


 
Igor Makanu :

Google kuralları: Timur Sergeyevich Mashnin " MQL5 programlama dili: MetaTrader 5 işlem platformunun gelişmiş kullanımı"

ve böylece, evet, MQL4'e göre Metaquotes resmi olarak Sergey Kovalev ders kitabını duyurdu. Algoritmik dilde programlama MQL4

Ve burada kim bu Timur'u biliyor?

Sonuçta, bir adam yazıyor:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MQL4, yardım ve algoritmalar ve kodlar hakkında herhangi bir acemi sorusu

psikan , 2018.10.15 19:56


Medvedev'in dediği gibi , bu, ders kitabının en başında yazılmalıdır , "Granite döküldü" :-)

Hangi ders kitabı? Yardım var, makaleler var, forum var ama ders kitabı yok. Ve orada neyin gerekli olduğunu ve ne giyileceğini belirtmek - bu, hala üçüncü taraf kaynaklarda aramanız ve bulmanız gereken ders kitabının yazarına bağlıdır. Onlar. iddia asılsızdır ve MetaQuotes'a karşı değildir.
 

= yani iddia asılsız


Bence bu konu herhangi bir iddiada bulunmanız gereken yer değil, ancak doğruluk istiyorsanız, o zaman öğretici kelimesini buradan aldım https://book.mql4.com/ru

En başından itibaren, OnInit hakkında hiçbir şey söylemeden init https://book.mql4.com/en/programm/structure kullanmaya başlarlar ve diğer örneklerde devam ederler.

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

= yani iddia asılsız


Bence bu konu herhangi bir iddiada bulunmanız gereken yer değil, ancak doğruluk istiyorsanız, o zaman öğretici kelimesini buradan aldım https://book.mql4.com/ru

En başından itibaren, OnInit hakkında hiçbir şey söylemeden init https://book.mql4.com/en/programm/structure kullanmaya başlarlar ve diğer örneklerde devam ederler.

Apaçık. Bu öğretici öğleden sonra yüz yaşında :)

Bunun hakkında bilgi sahibi olmayabileceğini anlıyorum.

Genel olarak - tanıtıcı bir tanıdık için (muhtemelen birisi için) gereklidir. Yazılmasından bu yana çok yıl geçti ve şimdi, okuduktan sonra, burada forumda bir şey sormak daha iyi.

Peki, "olmalı", "zorunlu", "yapmadı", "rapor vermedi" vb. Olmadan deneyin. ...

Tam ve derin bir mql4 ve mql5 bilgisi için gerekli olan her şey - her şey bu kaynakta bolca ve her zevke uygun.

 

Merhaba. Murrey Lines göstergesini anlamama yardım et. (aşağıdaki kod) .Danışmandaki verilerini işlev aracılığıyla kullanmak istedim

iCustom., ilk çubuktaki göstergenin 1. satırının değerini döndür - " double Divb1=iCustom(Symbol(), PERIOD_CURRENT ,"Murrey-levels-system",P,StepBack,1,1); " ve kullanın Divb1 piyasaya giriş şartı olarak ama test yapılırken bu satır dikkate alınmadan pozisyon açılır.(1 yerine gösterge satırının herhangi bir indeksini koyabilirsiniz, emirler aynı yerlerden açılır. If(Bid<) =Divb1) koşulu

Muhtemelen fonksiyon parametrelerinde bir hata var ama hangileri çözemedim.

//| |
//| Telif Hakkı © 1999-2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.ru |
//+------------------------------------------- --------------------+
#özellik göstergesi_chart_window
//----
harici int P=64;
harici intStepBack=0;
//----
double 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,oktav=0,fraktal=0,range =0,finalH=0,finalL =0,mml[13 ];
dizi ln_txt[13],
buff_str="";
int
bn_v1=0,
bn_v2=0,
OctLinesCnt=13,
mml_thk=8,
mml_clr[13],
mml_shft=3,
nZaman=0,
CurPeriod=0,
nRakamlar=0,
i=0;
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+
int init()
{
ln_txt[0]="[-2/8]P";
ln_txt[1] ="[-1/8]P"; ln_txt[2] ="DESTEK [0/8]";
ln_txt[3] ="STOP_RETURN [1/8]";
ln_txt[4] ="ROTATE_REVOLT [2/8]";
ln_txt[5] ="KANAL_BOTTOM [3/8]";
ln_txt[6] ="RESISTANCE_SUPPORT [4/8]";
ln_txt[7] ="KANAL ÜST [5/8]";
ln_txt[8] ="ROTATE_REVOLT [6/8]";
ln_txt[9] ="STOP_RETURN [7/8]";
ln_txt[10]="DİRENÇ [8/8]";
ln_txt[11]="[+1/8]P";// "aşma [+1/8]";
ln_txt[12]="[+2/8]P";// "aşırı derecede aşma [+2/8]";
//----
mml_shft=25;
mml_thk=3;
//----
mml_clr[0] = Macenta;
mml_clr[1]=Pembe;
mml_clr[2]=Mavi;
mml_clr[3]=turuncu;
mml_clr[4] =Kırmızı;
mml_clr[5] =OliveDrab;
mml_clr[6]=Mavi;
mml_clr[7]=OliveDrab;
mml_clr[8] =Kırmızı;
mml_clr[9]=turuncu;
mml_clr[10]=Mavi;
mml_clr[11]=Pembe;
mml_clr[12]=Macenta;
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+
int tanım()
{
yorum(" ");
for(i=0;i<OctLinesCnt;i++)
{
buff_str="mml"+i;
ObjectDelete(buff_str);
buff_str="mml_txt"+i;
ObjectDelete(buff_str);
}
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+
int başlangıç()
{
if((nTime!=Time[0]) || (CurPeriod!=Period()))
{
bn_v1=En Düşük(NULL,0,MODE_LOW,P+StepBack,0);
bn_v2=En Yüksek(NULL,0,MODE_HIGH,P+StepBack,0);
//----
v1=Düşük[bn_v1];
v2=Yüksek[bn_v2];
//----
if(v2<=250000 && v2>25000 )
fraktal=100000;
başka
if(v2<=25000 && v2>2500 )
fraktal=10000;
başka
if(v2<=2500 && v2>250 )
fraktal=1000;
başka
if(v2<=250 && v2>25 )
fraktal=100;
başka
if(v2<=25 && v2>12.5)
fraktal=12.5;
başka
if(v2<=12.5 && v2>6.25)
fraktal=12.5;
başka
if(v2<=6.25 && v2>3.125 )
fraktal=6.25;
başka
if(v2<=3.125 && v2>1.5625)
fraktal=3.125;
başka
if(v2<=1.5625 && v2>0.390625)
fraktal=1.5625;
başka
if(v2<=0.390625 && v2>0)
fraktal=0.1953125;
aralık=(v2-v1);
toplam=MathFloor(MathLog(fraktal/aralık)/MathLog(2));
oktav=fraktal*(MathPow(0.5,toplam));
mn=MathFloor(v1/oktav)*oktav;
if((mn+octav)>v2 )
mx=mn+oktav;
başka
mx=mn+(2*oktav);
if((v1>=(3*(mx-mn)/16+dk)) && (v2<=(9*(mx-mn)/16+dk)) )
x2=dk+(mx-dk)/2;
yoksa x2=0;
if((v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+dk)) && (x2==0) )
x1=dk+(mx-dk)/2;
yoksa x1=0;
if((v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
x4=dk+3*(mx-dk)/4;
yoksa x4=0;
if((v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+dk))&& (x4==0) )
x5=mx;
yoksa x5=0;
if((v1>=(mn+(mx-mn)/8))&& (v2<=(7*(mx-mn)/8+dk))&& (x1==0) && (x2==0) && (x4==0) && (x5==0) )
x3=dk+3*(mx-dk)/4;
yoksa x3=0;
if((x1+x2+x3+x4+x5) ==0 )
x6=mx;
yoksa x6=0;
nihaiH=x1+x2+x3+x4+x5+x6;
if(x1>0 )
y1=dk;
yoksa y1=0;
if(x2>0 )
y2=mn+(mx-mn)/4;
yoksa y2=0;
if(x3>0 )
y3=mn+(mx-mn)/4;
yoksa y3=0;
if(x4>0 )
y4=mn+(mx-mn)/2;
yoksa y4=0;
if(x5>0 )
y5=mn+(mx-mn)/2;
yoksa y5=0;
if((finalH>0) && ((y1+y2+y3+y4+y5)==0) )
y6=dk;
yoksa y6=0;
finalL=y1+y2+y3+y4+y5+y6;
for( i=0; i<OctLinesCnt; i++)
{
mml[i]=0;
}
dmml=(finalH-finalL)/8;
mml[0] =(sonL-dmml*2); //-2/8
for( i=1; i<OctLinesCnt; i++)
{
mml[i]=mml[i-1] + dmml;
}
for( i=0; i<OctLinesCnt; i++ )
{
buff_str="mml"+i;
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_HLINE, 0, Zaman[0], mml[i]);
ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(buff_str, OBJPROP_COLOR, mml_clr[i]);
ObjectMove(buff_str, 0, Zaman[0], mml[i]);
}
başka
{
ObjectMove(buff_str, 0, Zaman[0], mml[i]);
}
buff_str="mml_txt"+i;
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_TEXT, 0, Zaman[mml_shft], mml_shft);
ObjectSetText(buff_str, ln_txt[i], 8, "Arial", mml_clr[i]);
ObjectMove(buff_str, 0, Zaman[mml_shft], mml[i]);
}
başka
{
ObjectMove(buff_str, 0, Zaman[mml_shft], mml[i]);
}
}
nZaman=Zaman[0];
CurPeriod= Dönem();
}
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
 
Anatoliy Ryzhakov :

Merhaba. Gösterge ile ilgili yardım...

Kimse böyle ayak bezlerine bakmayacak.


 

= Genel olarak - giriş niteliğinde bir tanıdık için (muhtemelen birisi tarafından) gereklidir.


İyi örneklerle daha modern bir şey var mı?


= Peki, "olmalı", "zorunlu", "yapmadı", "söylemedi" olmadan dene


Beni başkasıyla karıştırıyor gibisin. O kelimeleri kullanmadım.

 

Göstergelerin nasıl yazılacağını anlamıyorum, sorunun ne olduğunu açıklayın?

active_1 ve active_2 öğeleri arasındaki fiyat farkını gösteren bir çizgi oluşturmanız gerekir

işe yarıyor

periyodun ortalama ma_periyodu da bu çizgi boyunca çizilmelidir, bu zaten bir problem, görüntülenmiyor

 #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);
  }
//+------------------------------------------------------------------+