İyi günler, kodlama ile uğraşmaya devam ediyorum, öğretici bölümündeki bir makaleden bir danışman örneği aldım, kodu örnekten değiştirdim:
Eğitim için keyfi olarak:
İşlemler görüntülenmiyor, lütfen nedenini, kodu nasıl düzelteceğimi söyleyin.
double MA_1[]; // нет обьявления размера, не видно как (локально или глобально) обьявлен,
// не видно оператора двигающего индекс массива.// лучше пока не освоили работу с массивами обьявите переменные и не парьтесьdouble MA_0= iMA ( NULL , 0 ,Period_MA, 0 , MODE_EMA , PRICE_CLOSE , 0 );
double MA_1= iMA ( NULL , 0 ,Period_MA, 0 , MODE_EMA , PRICE_CLOSE , 1 );
if (MA_1 < MA_0)
{ // ..МА последнего бара выше предыдущего
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}
if (MA_1 > MA_0)
{ // ..МА последнего бара ниже предыдущего
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
}
Urain , teşekkürler, mql mantığına hayran kalmayı asla bırakmam ve for(int i=1; deneyin, komut dosyası basitleştirilemez - bana nasıl düzenleneceğini söyleme, yine de yapamam diziyi hareket ettiren operatörü belirlemek için ne aracılığıyla dilin mantığını hissedin?
PS Diziyi bildirdim, örnek komut dosyasında yanlışlıkla sildim:
Abzasc : Fiyat farkı. Sonuç olarak, farklı, aksine, göstergelerin sonuçları ...
Orada farklı bir şey görmüyorum. Göstergeleri unutun, bir kez daha tekrar ediyorum, ticaret yaptığınız sizin için doğru olanıdır. Doğru şeylere odaklanmıyorsun.
harici int n = 20; harici int t3_period = 5; dış çift b = 0.618; harici int mbar = 300; harici int Çubuklar.Sayı = 0; int i,t,c; double Buf1[],Buf2[],CF_p[5001],CF_n[5001],Ch_p[5001],Ch_n[5001],k_n,k_p,ch_p,ch_n,cff_p,cff_n, AcBars,t3,t32,A1,A2,b2,b3,c1,c2,c3,c4,e1,e2,e3,e4,e5,e6,n1,w1,w2,e12,e22,e32,e42,e52, e62;
//+------------------------------------------- --------------------+ int() { SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, Buf1); SetIndexStyle(1, DRAW_LINE); SetIndexBuffer(1, Buf2); dönüş(0); } //+------------------------------------------- --------------------+ int start() { int limiti; if (IndicatorCounted()<0) return(-1); limit=Bars-IndicatorCounted(); if (Bars.Count>0 && limit>Bars.Count) limit=Bars.Count; for(int i=0; i<limit; i++) {
Beyler, kaybı belirli bir değeri aşan tüm kârsız siparişleri kapatan Igor Kim'in işlevini yeniden yapmanın mümkün olup olmadığını söyleyin:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 25.04.2008 |//| Описание : Закрытие тех позиций, у которых убыток в валюте депозита |//| превысил некоторое значение |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| pr - профит/убыток |//+----------------------------------------------------------------------------+void ClosePosBySizeLossInCurrency( string sy= "" , int op=- 1 , int mn=- 1 , double pr= 0 ) {
int i, k= OrdersTotal ();
if (sy== "0" ) sy= Symbol ();
for (i=k- 1 ; i>= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn< 0 || OrderMagicNumber()==mn) {
if (OrderProfit()+OrderSwap()<- MathAbs (pr)) ClosePosBySelect();
}
}
}
}
}
}
En büyük kaybı olan bir açık pozisyon bulmam gerekiyor. Sonuç olarak, en kârsız pozisyondan daha fazla karı olan bir pozisyon bulmam ve onları karşı tarafta kapatmam gerekiyor. Belki birisi bu konuda zaten deneyime sahiptir veya zaten böyle bir sorunla karşılaşmıştır?
neden farklı prensiplerde çalışan üç gösterge neredeyse aynı resmi gösteriyor (mızrakçı, stokastik ve mcd-rsi) - ancak %60'ın üzerinde bir olasılıkla doğru hareketi ve girişi gösteremiyorlar? veya yapabilir mi?
Selam millet! Bu yüzden, kârda X noktasını geçip Y>OrderOpenPrice noktasına düşmeye başladıktan sonra, siparişi kapatmak için hangi kodun gerekli olduğu sorusu ortaya çıktı, bundan sonra kapatılması gerekiyor.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
İyi günler, kodlama ile uğraşmaya devam ediyorum, öğretici bölümündeki bir makaleden bir danışman örneği aldım, kodu örnekten değiştirdim:
Eğitim için keyfi olarak:
İşlemler görüntülenmiyor, lütfen nedenini, kodu nasıl düzelteceğimi söyleyin.Urain , teşekkürler, mql mantığına hayran kalmayı asla bırakmam ve for(int i=1; deneyin, komut dosyası basitleştirilemez - bana nasıl düzenleneceğini söyleme, yine de yapamam diziyi hareket ettiren operatörü belirlemek için ne aracılığıyla dilin mantığını hissedin?
PS Diziyi bildirdim, örnek komut dosyasında yanlışlıkla sildim:
Fiyat farkı. Sonuç olarak, farklı, aksine, göstergelerin sonuçları ...
#özellik göstergesi_tamponları 2
#özellik göstergesi_color1 Mavi
#özellik göstergesi_renk2 Kırmızı
harici int n = 20;
harici int t3_period = 5;
dış çift b = 0.618;
harici int mbar = 300;
harici int Çubuklar.Sayı = 0;
int i,t,c;
double Buf1[],Buf2[],CF_p[5001],CF_n[5001],Ch_p[5001],Ch_n[5001],k_n,k_p,ch_p,ch_n,cff_p,cff_n,
AcBars,t3,t32,A1,A2,b2,b3,c1,c2,c3,c4,e1,e2,e3,e4,e5,e6,n1,w1,w2,e12,e22,e32,e42,e52, e62;
//+------------------------------------------- --------------------+
int() {
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, Buf1);
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, Buf2);
dönüş(0); }
//+------------------------------------------- --------------------+
int start() {
int limiti;
if (IndicatorCounted()<0) return(-1);
limit=Bars-IndicatorCounted();
if (Bars.Count>0 && limit>Bars.Count) limit=Bars.Count;
for(int i=0; i<limit; i++)
{
b2=b*b; b3=b2*b; c1=-b3; c2=(3*(b2+b3)); c3=-3*(2*b2+b+b3); c4=(1+3*b+b3+3*b2); n1=t3_periyodu;
if(n1<1) n1=1; n1=1+0.5*(n1-1); w1=2/(n1+1); w2=1-w1;
if(AcBars==0) AcBars=Bars-mBars;
for(c=AcBars; c<=Bars-1; c++) { i=Bars-1-c; {
if(Kapat[i]>Kapat[i+1]) { Ch_p[i]=Kapat[i]-Kapat[i+1]; CF_p[i]=Ch_p[i]+CF_p[i+1]; Ch_n[i]=0; CF_n[i]=0; }
başka { Ch_p[i]=0; CF_p[i]=0; Ch_n[i]=Kapat[i+1]-Kapat[i]; CF_n[i]=Ch_n[i]+CF_n[i+1]; }}
for(t=i+n; t>=i; t--) { ch_p=Ch_p[t]+ch_p; ch_n=Ch_n[t]+ch_n ; cff_p=CF_p[t]+cff_p; cff_n=CF_n[t]+cff_n; }
k_p=ch_p-cff_n; k_n=ch_n-cff_p;
A1=k_p; e1=w1*A1+w2*e1; e2=w1*e1+w2*e2; e3=w1*e2+w2*e3; e4=w1*e3+w2*e4;
e5=w1*e4+w2*e5; e6=w1*e5+w2*e6; t3=c1*e6+c2*e5+c3*e4+c4*e3; Buf1[i]=t3;
A2=k_n; e12=w1*A2+w2*e12; e22=w1*e12+w2*e22; e32=w1*e22+w2*e32; e42=w1*e32+w2*e42;
e52=w1*e42+w2*e52; e62=w1*e52+w2*e62; t32=c1*e62+c2*e52+c3*e42+c4*e32; Buf2[i]=t32;
AcBars=AcBars+1; ch_p=0; ch_n=0; cff_p=0; cff_n=0; }
}
dönüş(0); }
Hatanın nerede güncellenmediğini söyle, geçmiş normal görünüyor ama çevrimiçi değil
Tünaydın. Dizi bildirilir, dizi dizinini hareket ettiren operatör belirlenir, sipariş verilmez. Bana neyin yanlış olduğunu söyle.
OrderSend kaydolmayı deneyin, sonra her şey ortaya çıkacak ...
MetaEditore'daki standart yardımı okudunuz mu? Değilse, tamamını okuyun...
Tünaydın. Dizi bildirilir, dizi dizinini hareket ettiren operatör belirlenir, sipariş verilmez. Bana neyin yanlış olduğunu söyle.
En büyük kaybı olan bir açık pozisyon bulmam gerekiyor.
Sonuç olarak, en kârsız pozisyondan daha fazla karı olan bir pozisyon bulmam ve onları karşı tarafta kapatmam gerekiyor.
Belki birisi bu konuda zaten deneyime sahiptir veya zaten böyle bir sorunla karşılaşmıştır?
OrderSend kaydolmayı deneyin, sonra her şey ortaya çıkacak ...
MetaEditore'daki standart yardımı okudunuz mu? Değilse, tamamını okuyun...
Çocukluğundan beri yardıma başvurmadan soru sormak ve Yandex büyüdü. Sendov denizi, ancak pozisyonlar açılmıyor: