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

 
trader781 :
Nasıl desem, hala sınıfları, dizileri, makroları kullanmıyorum ve Windows kitaplıklarından içe aktarmıyorum. Her şeyin bir zamanı var.
Boşuna dizilerle. Diziler kullanışlıdır. Ve yapılar da. Gerisi, evet, projeler karmaşık değilse asla başvuramazsınız.
 
Vitalie Postolache :
Boşuna dizilerle. Diziler kullanışlıdır. Ve yapılar da. Gerisi, evet, projeler karmaşık değilse asla başvuramazsınız.
Diziler pahasına - katılıyorum, çok uygun ve çoğu zaman onlarsız aklı başında bir program yazamazsınız. yapılar ... işte, burada olduğu gibi, bir amatör için, sınıflarda web programlarında yazıyorum, onlarsız gerçekten kötü ve uygunsuz, özellikle proje büyükse, ama bir şekilde MQ'da beğenmedim. düzenli bir tek sayfalık Uzman Danışman. OOP'ta açık / kapalı olarak tüm verileri yazdım, kullanmaya başladım ve her şeyi sildim, prosedürel bir tarzda yeniden yazdım ve kullandım, her şeyi tek bir döngüde yazdım. Yani dersler herkes içindir
 
Vitaly Muzichenko :
Diziler pahasına - katılıyorum, çok uygun ve çoğu zaman onlarsız aklı başında bir program yazamazsınız. Yapılar ... işte, burada olduğu gibi, bir amatör için, sınıflarda web programlarında yazıyorum, onlarsız gerçekten kötü ve uygunsuz, özellikle proje büyükse, ama bir şekilde MQ'da beğenmedim. düzenli bir tek sayfalık Uzman Danışman. OOP'ta açık / kapalı olarak tüm verileri yazdım, kullanmaya başladım ve her şeyi sildim, prosedürel bir tarzda yeniden yazdım ve kullandım, her şeyi tek bir döngüde yazdım. Yani dersler herkes içindir
Emmm. Peki ya sınıflar? Yapılar ve sınıflar farklı şeylerdir. Yapılar hakkında bir şeyler yazdım. MqlRates orada ve sonra...
 

Lütfen maksimum açık sipariş sayısını eklememe yardım edin (MAXORders)


//
extern string rem2 = "=== Parti sayısı ===";
harici çift _Lots0_1 = 0.1; // Temel seviye (1. sıra için)
harici çift _Lots0_2 = 0.1; // Temel seviye (2. sıra için)
//
extern string rem3 = "=== Ek parametreler ===";
harici int _TakeProfit1_Proc = 50; // 1. mertebeden kar alma riski yüzdesi
extern int _SpaseFromMaxMin = 1; // Üstten/Alttan Ofset
//
extern string rem4 = "=== Başabaş parametreler ===";
extern bool _IsStopLoss_0 = yanlış; // Başabaş seviyesinin kullanımını etkinleştirme
harici int _StopLoss_0_From = 0; // Başabaş seviyesinden ofset (puan olarak)
harici int _StopLoss_0_Level = 15; // Başabaş seviyesi
//
extern string rem5 = "=== İzleyen durdurma parametreleri ===";
extern bool _IsTrailingStop = false; // Sondaki durdurmayı etkinleştir
bool _IsTrailingStopProfit = true; // Başabaş konumundan sondaki durdurmayı etkinleştirme
//harici int _TrailingStopProfit_From = 0; // Başabaş seviyesinden ofset (puan olarak)
extern int _TrailingStopLevel = 15; // Takip eden durma seviyesi
extern int _TrailingStopStep = 5; // Sondaki dur hareket adımı
//
extern string rem6 = "=== Araç ayarları ===";
harici string _Symboll = ""; // Enstrümanın sembolik adı: "" - geçerli sembol
harici int _Zaman çerçevesi = 0; // Periyot: 0 - mevcut grafiğin periyodu
int_Rakamlar; // Fiyatta ondalık noktadan sonraki basamak sayısı
çift _Puan; // Alıntı para biriminde nokta boyutu
extern int _Slippage = 2; // kayma
harici int _Magic1 = 1281; // EA siparişlerinin benzersiz sayısı (1. sıra)
harici int _Magic2 = 1282; // EA siparişlerinin benzersiz sayısı (2. sıra)
//
extern string rem7 = "=== MA1 gösterge parametreleri ===";
harici int _MA1_Zaman çerçevesi = PERIOD_D1; // Periyot: 0 - mevcut grafiğin periyodu
harici int _MA1_Period = 20; // Hareketli ortalamanın hesaplanması için ortalama periyot
harici int _MA1_Shift = 0; // Fiyat grafiğine göre gösterge kayması
harici int _MA1_Yöntem = 0; // Ortalama alma yöntemi: 0 - SMA, 1 - EMA, 2 - SMMA, 3 - LWMA
harici int _MA1_Applied_Price = 0; // Kullanılan fiyat: 0 - kapat, 1 - açık, 2 - yüksek, 3 - düşük
//
extern string rem8 = "=== MA2 gösterge parametreleri ===";
harici int _MA2_Zaman çerçevesi = PERIOD_H4; // Periyot: 0 - mevcut grafiğin periyodu
harici int _MA2_Period = 20; // Hareketli ortalamanın hesaplanması için ortalama periyot
harici int _MA2_Shift = 0; // Fiyat grafiğine göre gösterge kayması
harici int _MA2_Method = 0; // Ortalama alma yöntemi: 0 - SMA, 1 - EMA, 2 - SMMA, 3 - LWMA
harici int _MA2_Applied_Price = 0; // Kullanılan fiyat: 0 - kapat, 1 - açık, 2 - yüksek, 3 - düşük
//
extern string rem9 = "=== Bollinger Bantları gösterge parametreleri ===";
//harici int _BB_Zaman çerçevesi = 0; // Periyot: 0 - mevcut grafiğin periyodu
harici int _BB_Period = 20; // Ana gösterge çizgisinin ortalama periyodu
harici int _BB_Deviation = 2; // Ana hattan sapma
harici int _BB_Bands_Shift = 0; // Fiyat grafiğine göre gösterge kayması
harici int _BB_Applied_Price = 0; // Kullanılan fiyat: 0 - kapat
//
extern string rem10 = "=== ZigZag gösterge parametreleri ===";
//harici int _ZZ_Zaman çerçevesi = 0; // Periyot: 0 - mevcut grafiğin periyodu
harici int _ZZ_ExtDepth = 12;
harici int _ZZ_ExtDeviation = 5;
harici int _ZZ_ExtBackstep = 3;
//
datetime_TimeÖnceki;
tarihsaat _TimeCurrent;
//
string_fstr;
int_tp;
//



void MaxOrders(int max_orders=5);










//=++============================================ ================++=
int init()
{
if(_Symbol == "") _Symboll = Symbol();
//
_Digitss = MarketInfo(_Symbol, MODE_DIGITS);
_Points = MarketInfo(_Symbol, MODE_POINT);
//
if(_Timeframe == 0) _Timeframe = Dönem();
Print("v128-2 > init() >> _Timeframe=", _Timeframe,
"rem4=",_IsStopLoss_0,
"rem5=",_IsTrailingStop,_IsTrailingStopProfit);
//
_fstr = "v128_";
_tp = _FileReadWriteDouble(_fstr+"_tp.dat", 0); // dosyanın var olduğundan emin olun, yoksa oluşturun
Print("v128-2 > init() >> _Timeframe=", _Timeframe, " _tp=",_tp);
//
_TimePrevious=iTime(_Symbol, _Timeframe, 0);
//
Print("v128-2 > Bitti: init() >> _TimePrevious=", _TimePrevious, " (", TimeToStr(_TimePrevious,TIME_DATE|TIME_MINUTES), ")");
dönüş(0);
}


//=++============================================ ================++=
int başlangıç()
{
çift P_Close1, P_Close2;
çift BB_1_üst, BB_1_alt;
çift MA1_0, MA2_0;
çift P_ask, P_bid;
bool is_signal_2_buy, is_signal_2_sell;
çift P1_buy, P2_buy, P3_buy;
çift P1_sell, P2_sell, P3_sell;
bool is_b1 = yanlış, is_s1 = yanlış;
bool is_b2 = yanlış, is_s2 = yanlış;
int bileti;
//
_TimeCurrent = iTime(_Symbol, _Timeframe, 0);
if(_TimeCurrent != _TimePrevious)
{
MA1_0 = iMA(_Symbol, _MA1_Timeframe, _MA1_Period, _MA1_Shift, _MA1_Method, _MA1_Applied_Price, 0);
MA2_0 = iMA(_Symbol, _MA2_Timeframe, _MA2_Period, _MA2_Shift, _MA2_Method, _MA2_Applied_Price, 0);
BB_1_upper = iBands(_Symbol, _Timeframe, _BB_Period,_BB_Shift,_BB_Bands_Shift,_BB_Applied_Price, MODE_UPPER, 1);
BB_1_lower = iBands(_Symbol, _Timeframe, _BB_Period,_BB_Shift,_BB_Bands_Shift,_BB_Applied_Price, MODE_LOWER, 1);
P_Close1 = iClose(_Symbol, _Timeframe, 1);
P_Close2 = iClose(_Symbol, _Timeframe, 2);
P_ask = MarketInfo(_Symbol, MODE_ASK);
P_bid = MarketInfo(_Symbol, MODE_BID);
Print("v120-4 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> MA1_0=", MA1_0, " | MA2_0=", MA2_0,
" -> BB_1_upper=", BB_1_upper, " | BB_1_lower=", BB_1_lower,
" -> P_Close1=", P_Close1, " | P_Close2=", P_Close2,
" -> ask=", P_ask, " | bid=", P_bid);
//
is_signal_2_buy = P_bid >= MA1_0 && P_bid >= MA2_0 && P_Close1 >= BB_1_lower && P_Close2 <= BB_1_lower && P_bid >= BB_1_lower;
is_signal_2_sell = P_bid <= MA1_0 && P_bid <= MA2_0 && P_Close1 <= BB_1_upper && P_Close2 >= BB_1_upper && P_bid <= BB_1_upper;
Print("v128-2 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> is_signal2 -> buy=", is_signal_2_buy, " | sell=", is_signal_2_sell);
// ========= pazara göre
// ========== bir SATIN AL emri açma
if( is_signal_2_buy )
{
Print("v128-2 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> SATIN AL emri açma sinyali");
OrdersDeleteAll(OP_SELL);
//
if(!is_b1 || !is_b2)
{
P1_buy = P_ask;
P3_buy = FindPriceMinMax(yanlış) - (_SpaseFromMaxMin) * _Point;
_tp = (P1_buy - P3_buy) / _Point * (_TakeProfit1_Proc / 100.0);
P2_buy = DoubleTestZero(_tp, P1_buy + (_tp) * _Point);
//
_FileWriteDouble(_fstr+"_tp.dat", _tp);
//
Print("v128-2 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> AL -> P1_buy=", P1_buy, " | P2_buy=", P2_buy, " | P3_buy=", P3_buy, "_tp=", _tp);
//
bilet = OrderSend(_Symbol, OP_BUY, _Lots0_1, ND(P1_buy), _Slippage, ND(P3_buy), ND(P2_buy),
NULL, _Magic1, 0, CLR_NONE);
if(bilet == -1)
Print("v128-2 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> SATIN AL (1) > Hata (açma) #", GetLastError());
başka is_b1 = doğru;
//
bilet = OrderSend(_Symbol, OP_BUY, _Lots0_2, ND(P1_buy), _Slippage, ND(P3_buy), 0,
NULL, _Magic2, 0, CLR_NONE);
if(bilet == -1)
Print("v128-2 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> SATIN AL (2) > Hata (açma) #", GetLastError());
başka is_b2 = doğru;
//
}
başka { is_b1 = doğru; is_b2 = doğru; }
}
başka { is_b1 = doğru; is_b2 = doğru; }
//Print("= satın al +++",is_b1,is_b2,"==",is_s1,is_s2);
// ========== bir SATIŞ emri açma
if( is_signal_2_sell )
{
Print("v128-2 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> SATIŞ emri açma sinyali");
OrdersDeleteAll(OP_BUY);
//
if(!is_s1 || !is_s2)
{
P1_sell = P_bid;
P3_sell = FindPriceMinMax(true) + (_SpaseFromMaxMin) * _Point;
_tp = (P3_sell - P1_sell) / _Point * (_TakeProfit1_Proc / 100.0);
P2_sell = DoubleTestZero(_tp, P1_sell - (_tp) * _Point);
//
_FileWriteDouble(_fstr+"_tp.dat", _tp);
//
Print("v128-2 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> SATIN AL -> P1_sell=", P1_sell, " | P2_sell=", P2_sell, " | P3_sell=", P3_sell);
//
bilet = OrderSend(_Symbol, OP_SELL, _Lots0_1, ND(P1_sell), _Slippage, ND(P3_sell), ND(P2_sell),
NULL, _Magic1, 0, CLR_NONE);
if(bilet == -1)
Print("v128-2 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> SAT (1) > Hata (açma) #", GetLastError());
başka is_s1 = doğru;
//
bilet = OrderSend(_Symbol, OP_SELL, _Lots0_2, ND(P1_sell), _Slippage, ND(P3_sell), 0,
NULL, _Magic2, 0, CLR_NONE);
if(bilet == -1)
Print("v128-2 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> SAT (2) > Hata (açma) #", GetLastError());
başka is_s2 = doğru;
//
}
başka { is_s1 = doğru; is_s2 = doğru; }
}
başka { is_s1 = doğru; is_s2 = doğru; }
//Print("= sat +++",is_b1,is_b2,"==",is_s1,is_s2);
// ==========
if(is_b1 && is_s1 && is_b2 && is_s2)
_TimePrevious=_TimeCurrent;
}
//
if(_IsTrailingStop)
{
if( !FindOrders(_Magic1) ) TrailingStop(_tp);
}
//
if(_IsStopLoss_0)
StopLoss_0(_StopLoss_0_From);
//
dönüş(0);
}


//=++============================================ ================++=
double DoubleTestZero(çift değer, çift yeni_değer)
{
if(değer==0) dönüş(değer);
başka bir dönüş(yeni_değer);
}


//=++============================================ ================++=
çift ND(çift değer)
{
dönüş( NormalizeDouble(değer, _Digits) );
}


//=++============================================ ================++=
// siparişleri kapatıyoruz. Tümünü kapat
void OrdersDeleteAll(int cmd)
{
while(CountOrders(cmd) > 0)
{
for(int i = OrdersTotal() - 1; i >= 0 ; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if( (OrderSymbol() == _Symbol)
&& (OrderMagicNumber() == _Magic1 || OrderMagicNumber() == _Magic2)
&& (OrderType() == cmd))
{
if(OrderType() == OP_BUY)
if(!OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), _Slippage, CLR_NONE))
Print("v128-2 > ", _Symbol, " > SATIN AL -> bilet=", OrderTicket(),
" -> Hata (kapanış) #", GetLastError());
if(OrderType() == OP_SEL)
if(!OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), _Slippage, CLR_NONE))
Print("v128-2 > ", _Symbol, " > SAT -> bilet=", OrderTicket(),
" -> Hata (kapanış) #", GetLastError());
}
}
}

}

}



//=++============================================ ================++=
// yöndeki siparişlerin sayısını sayma
int CountOrders(int cmd)
{
int n = 0;
for(int i = OrdersTotal() - 1; i >= 0 ; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if( (OrderSymbol() == _Symbol)
&& (OrderMagicNumber() == _Magic1 || OrderMagicNumber() == _Magic2)
&& (OrderType() == cmd) ) n++;
}
}
dönüş(n);
}


//=++============================================ ================++=
// sihirle bir sipariş ara
bool FindOrders(int magic)
{
for(int i = OrdersTotal() - 1; i >= 0 ; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if( (OrderSymbol() == _Symbol) && (OrderMagicNumber() == büyü))
dönüş(doğru);
}
}
dönüş(yanlış);
}


//=++============================================ ================++=
// sihirle başabaş seviyesini hesaplamak
void StopLoss_0(int from)
{
çift kar noktası, teklif, sor;
bool;
çift P3_buy, P3_sell;
//
for(int i = OrdersTotal() - 1; i >= 0 ; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(!( (OrderSymbol() == _Symbol) && (OrderMagicNumber() == _Magic1 || OrderMagicNumber() == _Magic2) )) devam;
//
if(OrderType() == OP_BUY)
{
teklif = MarketInfo(_Symbol, MODE_BID);
kâr noktası = (teklif - OrderOpenPrice()) / _Point;
is = kâr noktası >= _StopLoss_0_Level + from;
P3_buy = ND( OrderOpenPrice() + * _Point'ten);
//
if( is && ( OrderStopLoss() == 0 || OrderStopLoss() < P3_buy ) )
{
Print("v128-2 b4 >", _Symbol, " | ", _Zaman Çerçevesi,
" -> Teklif=", MarketInfo(_Symbol, MODE_BID),
" | p/o=", OrderOpenPrice(), " | s/l=", OrderStopLoss(), " | P3_buy=", P3_buy,
" | d=", _StopLoss_0_Level, " | kâr noktası=", kâr noktası);
if(!OrderModify(OrderTicket(), OrderOpenPrice(), P3_buy, OrderTakeProfit(), 0, CLR_NONE))
Print("v128-2 b4 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> SATIN AL > bilet=", OrderTicket(), " > Hata (başabaş) #", GetLastError());
}
}
//
else if(OrderType() == OP_SELL)
{
sor = MarketInfo(_Symbol, MODE_ASK);
kâr noktası = (OrderOpenPrice() - sor) / _Point;
is = kâr noktası >= _StopLoss_0_Level + from;
P3_sell = ND( OrderOpenPrice() - * _Point'ten);
//
if( is && ( OrderStopLoss() == 0 || OrderStopLoss() > P3_sell ) )
{
Print("v128-2 b4 >", _Symbol, " | ", _Zaman Çerçevesi,
" -> Sor =", MarketInfo(_Symbol, MODE_ASK),
" | p/o=", OrderOpenPrice(), " | s/l=", OrderStopLoss(), " | P3_sell=", P3_sell,
" | d=", _StopLoss_0_Level, " | kâr noktası=", kâr noktası);
if(!OrderModify(OrderTicket(), OrderOpenPrice(), P3_sell, OrderTakeProfit(), 0, CLR_NONE))
Print("v128-2 b4 > ", _Symbol, " | ", _Zaman Çerçevesi,
" -> SAT -> bilet=", OrderTicket(), " > Hata (başabaş) #", GetLastError());
}
}
}
}
}


//=++============================================ ================++=
// sihirle sondaki durdurmayı hesaplamak
void TrailingStop(int from)
{
çift kar noktası, teklif, sor;
çift fiyat;
//
for(int i = OrdersTotal() - 1; i >= 0 ; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(!( (OrderSymbol() == _Symbol) && (OrderMagicNumber() == _Magic1 || OrderMagicNumber() == _Magic2) )) devam;
//
if(OrderType() == OP_BUY)
{
if(_IsTrailingStopProfit) fromprice = OrderOpenPrice() + * _Point'ten;
başka fromprice = OrderStopLoss();
//
teklif = MarketInfo(_Symbol, MODE_BID);
kâr noktası = (teklif - ND(fiyattan)) / _Puan;
//
if( kâr noktası >= _TrailingStopLevel &&
teklif > (OrderStopLoss() + (_TrailingStopLevel + _TrailingStopStep) * _Point))
{
Print("v128-2 v4 >", _Symbol, " | ", _Zaman Çerçevesi,
" -> Teklif=", MarketInfo(_Symbol, MODE_BID),
" | p/o=", OrderOpenPrice(), " | s/l=", OrderStopLoss(),
" | d=", _TrailingStopLevel, " | kâr noktası=", kâr noktası);
if(!OrderModify(OrderTicket(), OrderOpenPrice(), ND(teklif - (_TrailingStopLevel) * _Point),
OrderTakeProfit(), 0, CLR_NONE))
{
Print("v128-2 v4 >", _Symbol, " | ", _Zaman Çerçevesi,
" -> SATIN AL > bilet=", OrderTicket(), " > Hata (sondaki durak) #", GetLastError());
}
}
}
//
else if(OrderType() == OP_SELL)
{
if(_IsTrailingStopProfit) fromprice = OrderOpenPrice() - * _Point'ten;
başka fromprice = OrderStopLoss();
//
sor = MarketInfo(_Symbol, MODE_ASK);
kâr noktası = (ND(fiyattan) - sor) / _Puan;
//
if( kâr noktası >= _TrailingStopLevel &&
sor < (OrderStopLoss() - (_TrailingStopLevel + _TrailingStopStep) * _Point))
{
Print("v128-2 v4 >", _Symbol, " | ", _Zaman Çerçevesi,
" -> Ask=", MarketInfo(_Symbol, MODE_ASK),
" | p/o=", OrderOpenPrice(), " | s/l=", OrderStopLoss(),
" | d=", _TrailingStopLevel, " | kâr noktası=", kâr noktası);
if(!OrderModify(OrderTicket(), OrderOpenPrice(), ND(ask + (_TrailingStopLevel) * _Point),
OrderTakeProfit(), 0, CLR_NONE))
{
Print("v128-2 v4 >", _Symbol, " | ", _Zaman Çerçevesi,
" -> SAT > bilet=", OrderTicket(), " > Hata (sondaki durak) #", GetLastError());
}
}
}
}
}
}


//=++============================================ ================++=
// Yerel dip bulma. Fiyatı döndürür
double FindPriceMinMax(bool isUp)
{
int kaydırma = 1;
çift fiyat = 0, p0,p1,p2;
süre(fiyat == 0)
{
p0 = iCustom(_Symbol, _Timeframe, "ZigZag", _ZZ_ExtDepth, _ZZ_ExtDeviation, _ZZ_ExtBackstep, 0, shift);
p1 = iCustom(_Symbol, _Timeframe, "ZigZag", _ZZ_ExtDepth, _ZZ_ExtDeviation, _ZZ_ExtBackstep, 1, shift);
p2 = iCustom(_Symbol, _Timeframe, "ZigZag", _ZZ_ExtDepth, _ZZ_ExtDeviation, _ZZ_ExtBackstep, 2, shift);
//Print("v128-2 >", _Symbol, " | ", _Zaman Çerçevesi,
// " > eleme=", shift, " | p0=", p0, " | p1=", p1, " | p2=", p2);
eğer(isUp)
{
if(p0 !=0 && p0 == p1) // köşe bulundu
fiyat = p0;
}
başka
{
if(p0 != 0 && p0 == p2) // alt bulundu
fiyat = p0;
}
vardiya++;
}
//Print("v128-2 >", _Symbol, " | ", _Zaman Çerçevesi,
// " -> iade(fiyat)=", fiyat);
iade(fiyat);
}


//============================================== ====================
// Dosyadan değişkeni oku.
// Dosya mevcut değilse, bir dosya oluşturun ve değişkeni dosyaya yazın
double _FileReadWriteDouble(dize dosya adı, çift değer)
{
int h1 = FileOpen(dosya adı, FILE_BIN);
eğer(h1 > 0)
{
değer = FileReadDouble(h1, DOUBLE_VALUE);
DosyaKapat(h1);
}
başka
{
h1 = FileOpen(dosya adı, FILE_BIN|FILE_WRITE);
FileWriteDouble(h1, değer, DOUBLE_VALUE);
DosyaKapat(h1);
}
geri dönüş değeri);
}


//============================================== ====================
// Dosyaya değişken yaz
void _FileWriteDouble(dize dosya adı, çift değer)
{
int h1 = FileOpen(dosyaadı, FILE_BIN|FILE_WRITE);
FileWriteDouble(h1, değer, DOUBLE_VALUE);
DosyaKapat(h1);

}

 
Vitalie Postolache :

Yukarıda gösterdiğiniz kodda, çağrı mevcut TF'ye, peki neden bahsediyoruz? W1'den M5'e atıfta bulunuyorsanız, böyle yazın.

Geçerli zaman çerçevesiyle çalışırsanız, kapanış fiyatı sıfır çubuğunda dalgalanır ve geri kalanında yalnızca bir Kapanış fiyatı vardır ve bir set değil, bir değer üzerinde bir histogram oluşturduğunuzda anlamıyorum .

Resimler, mesaj düzenleme penceresinin üst kısmındaki ilgili buton kullanılarak eklenir, birçok faydalı buton var, çalışmanızı tavsiye ederim.

Bu yüzden mevcut TF-ma sırasında daha küçük bir TF-ma'dan mevcut TF-ma'daki minimum ve maksimum gösterge okumalarını nasıl alacağımı soruyorum, örneğin ekran görüntülerini verdim,

Nasıl resim ekleneceğini aramak istemeyen tembel bir insan olduğumu düşünüyorsanız, o zaman hayır. Ama hala çalışmıyor. Terminalde (Insta) grafiğe sağ tıklıyorum - Resim olarak kaydet - Aktif grafiği olduğu gibi - MKL5'e çevir (ekranda terminalin aynı resmi var) - alt satır bbCode (Şunu seçip kopyalıyorum) kodu) sonra bu kodu mesaja yapıştırıyorum, mesaj gönderdikten sonra mesajın kendisinin bir resmi olmalı (ve bu forumda yok, sadece kod metni gösteriliyor), "resim" düğmesini kullanmayı denedim ( Ctrl + Alt + l ) bir dosya seçmenizi gerektirir ve indirilen kod bu sütuna eklenmez, ancak ekran görüntüleri olmadan anlayamazsınız.


 
vitek2010 :

Bu yüzden mevcut TF-ma sırasında daha küçük bir TF-ma'dan mevcut TF-ma'daki minimum ve maksimum gösterge okumalarını nasıl alacağımı soruyorum, örneğin ekran görüntülerini verdim,

Nasıl resim ekleneceğini aramak istemeyen tembel bir insan olduğumu düşünüyorsanız, o zaman hayır. Ama hala çalışmıyor. Terminalde (Insta) grafiğe sağ tıklıyorum - Resim olarak kaydet - Aktif grafiği olduğu gibi - MKL5'e çevir (ekranda terminalin aynı resmi var) - alt satır bbCode (Şunu seçip kopyalıyorum) kodu) sonra bu kodu mesaja yapıştırıyorum, mesaj gönderdikten sonra mesajın kendisinin bir resmi olmalı (ve bu forumda yok, sadece kod metni gösteriliyor), "resim" düğmesini kullanmayı denedim ( Ctrl + Alt + l ) bir dosya seçmenizi gerektirir ve indirilen kod bu sütuna eklenmez, ancak ekran görüntüleri olmadan anlayamazsınız.

Yerel bir bilgisayardaki dosya adı yerine, dosya adının yazıldığı aynı satıra bir bağlantı ekleyebilirsiniz, her şey çalışır. Bunun gibi

Ayrıca mesaja bir bağlantı da ekleyebilirsiniz, ancak etiketler olmadan bu forumda etiketler çalışmaz. Bunun gibi

Daha küçük zaman dilimlerinden fiyat alma konusunda ise her fiyat için ayrı ayrı CopyRates ve benzeri fonksiyonlar bulunmaktadır.

Diziye kopyalanır, daha sonra döngüde zaman, eski TF'nin mumunun zamanı ile karşılaştırılır, eğer genç mum uygunsa, göstergede fiyat hesaplanır.
 
Test cihazında göstergelerin çizimlerini bir şekilde görmek mümkün mü, aksi takdirde tabloya bakılırsa, orada bir şeyi kaçırdım
Dosyalar:
Tester11.gif  18 kb
 
trader781 :
Test cihazında göstergelerin çizimlerini bir şekilde görmek mümkün mü, aksi takdirde tabloya bakılırsa, orada bir şeyi kaçırdım

Test cihazında " Grafik aç " düğmesi var. Ne için olduğunu merak ediyorum?

Peki ya da bir "Görselleştirme" tik.

 
Vitalie Postolache :

Test cihazında " Grafik aç " düğmesi var. Ne için olduğunu merak ediyorum?

Peki ya da bir "Görselleştirme" tik.

Grafiği kaydırırken hindi olmamasından bahsediyorum.
 
trader781 :
Grafiği kaydırırken hindi olmamasından bahsediyorum.
Ve asla olmadı. Gerektiğinde el seti. Testi duraklat , grafikteki gösterge, daha fazla dön.