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

 
forexman77 :

Başka bir DC'de denedim, her şey yolunda görünüyor. Soru, neden o zaman ararken:

0,01 yazdırıyor, ancak botta 131 yazdırıyor mu?

Fonksiyona geçildiğinde lotların normalleştirilmesi gerekir.

 
Artyom Trishkin :

Fonksiyona geçildiğinde lotların normalleştirilmesi gerekir.


Genelde normalleşme harcarım diye yazdım. Otomatik ticarette lot sayısında bir miktar sınırlama vardır.

Buraya "Kaptan Apaçıklığı" eklemeye gerek yok.
 
forexman77 :

Genelde normalleşme harcarım diye yazdım. Otomatik ticarette lot sayısında bir miktar sınırlama vardır.

Buraya "Kaptan Apaçıklığı" eklemeye gerek yok.

İletişim kurmaya karar verdiğinden beri kendine bak.

 
rabanik :

Cevap için çok teşekkür ederim.

Bütün fonksiyon bu, mesele şu ki, bir emir açar ve sonra modifikasyon yoluyla, sabit zararı durdur ve kar değerleri ekler.

Yani emir açılıyor ama zararı durdur ve cari kar düşmüyor (hesaplama fonksiyonunu kırmızı ile vurguladım, burada OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES) hata veriyor ((( )

// emir açma fonksiyonu, değişkenler: sembol, emir tipi, lot, açık fiyat, TP ve SL hesaplama yöntemi (0 - fiyatta set, 1 - açık fiyattan hesaplanacak puanlarda set), zararı durdur, kar al )

//Sembol/Çift, açık emir tipi - beklemede, Açık fiyat, Anahtar = 1, SL B TP - zararı durdur ve kar al değerleri sabittir!!!

bool SendOrder(string Symb,int Type, double OP,int Mode) {
renk CL;
double Pp = MarketInfo(Symb, MODE_POINT);
if (Tür==0) CL=Mavi;
if (Tür==1) CL=Kırmızı;
if (Tür==2 || Tür==4) CL=KoyuTurkuaz;
if (Tür==3 || Tür==5) CL=Turuncu;
// ses kontrolü
if(MarketInfo(Symb,MODE_LOTSTEP)==0.01) DG=2; başka DG=1;
if (Lot<MarketInfo(Symb,MODE_MINLOT)) Lot=MarketInfo(Symb,MODE_MINLOT);
if (Lot>MarketInfo(Symb,MODE_MAXLOT)) Lot=MarketInfo(Symb,MODE_MAXLOT);
if (Lot*MarketInfo(Symb,MODE_MARGINREQUIRED)>AccountEquity()) {
PnC(StringConcatenate("Anlaşma açmak için yeterli para yok",Type," volume: ",DoubleToStr(Lot,DG))),0);
dönüş;
}
// bekleyen siparişler kontrol ediliyor
/*
double Slv = MarketInfo(Symb,MODE_STOPLEVEL)*Pp;
if (Tür>1) {
if (Type==2 && MarketInfo(Symb,MODE_ASK)-OP<Slv) OP=MarketInfo(Symb,MODE_ASK)-Slv;
if (Type==3 && OP-MarketInfo(Symb,MODE_BID)<Slv) OP=MarketInfo(Symb,MODE_BID)+Slv;
if (Type==4 && OP-MarketInfo(Symb,MODE_ASK)<Slv) OP=MarketInfo(Symb,MODE_ASK)+Slv;
if (Type==5 && MarketInfo(Symb,MODE_BID)-OP<Slv) OP=MarketInfo(Symb,MODE_BID)-Slv;
}
*/
Yeniler();
int Min_Dist = MarketInfo(Symb,MODE_STOPLEVEL); //Puan olarak izin verilen minimum zarar durdurma/kar alma seviyesi. Min. mesafe
double Tek_Ask = MarketInfo(Symb,MODE_ASK); //Son alınan satış fiyatı. Geçerli sembol için önceden tanımlanmış Ask değişkeninde saklanır.
double Tek_Bid = MarketInfo(Symb,MODE_BID); //Son alınan teklif fiyatı. Mevcut araç için, önceden tanımlanmış Bid değişkeninde saklanır.
double Tek_Point = MarketInfo(Symb,MODE_POINT); //Teklif para biriminde punto boyutu. Mevcut takım için önceden tanımlanmış değişken Noktada saklanır
int Tek_Digits = MarketInfo(Symb,MODE_DIGITS);//Enstrüman fiyatındaki ondalık noktadan sonraki basamak sayısı. Mevcut enstrüman için önceden tanımlanmış değişken Basamaklarda saklanır

double Slv = NormalizeDouble(Min_Dist*Tek_Point,Tek_Digits);
if (Tür>1) {
if (Type==2 && Tek_Ask - OP < Slv) OP = Tek_Ask - Slv;
if (Type==3 && OP - Tek_Bid < Slv) OP = Tek_Bid + Slv;
if (Type==4 && OP - Tek_Ask < Slv) OP = Tek_Ask + Slv;
if (Type==5 && Tek_Bid - OP < Slv) OP = Tek_Bid - Slv;
}
// durakları kontrol etme
if (SL!=0 || TP!=0) {
if (Mod==0) {
if (MathAbs(OP-SL)<Slv && SL!=0) {
if (Tür==0 || Tür==2 || Tür==4) SL=OP-Slv; başka SL=OP+Slv;
}
if (MathAbs(OP-TP)<Slv && TP!=0) {
if (Tür==0 || Tür==2 || Tür==4) TP=OP+Slv; başka TP=OP-Slv;
}
}başka{
if (SL*Pp<Slv && SL!=0) SL=Slv/Pp;
if (TP*Pp<Slv && TP!=0) TP=Slv/Pp;
}
}
// açık
for(int k=0;k<=TryToTrade;k++) {
if (Tür==0) OP=MarketInfo(Symb,MODE_ASK);
if (Tür==1) OP=MarketInfo(Symb,MODE_BID);
PnC(StringConcatenate("Sipariş açma girişimi, şunu yazın: ",Tür," hacim: ",Lot," fiyat: ",OP),0);
if (IsTradeAllowed()) {
int Ticket=OrderSend(Symb,Type,Lot,NormalizeDouble(OP,MarketInfo(Symb,MODE_DIGITS)),3,0,0,NULL,Tek_Magic,0,CL);
}else{ PnC(StringConcatenate("Sipariş açılamıyor",k),0); uyku(3000); devam etmek; }
if (Ticket >= 0) { PnC(StringConcatenate("Sipariş açık",Ticket),0); kırmak; }
LastError=Fun_Error(GetLastError());
if (LastError==0) {
Yeniler(); Uyku(Bekleme Süresi);
if (k==TryToTrade) return(false); }
if (LastError==1) return(false);
if (LastError==2) { İş=yanlış; dönüş(yanlış); }
}
// durakları ayarla
OrderSelect(Bilet,SELECT_BY_TICKET,MODE_TRADES);
if (SL==0 && TP==0) döner;
if (Mod==1) {
if (SL!=0) {
if (Tür==0 || Tür==2 || Tür==4) SL=OrderOpenPrice()-SL*Pp;
if (Tür==1 || Tür==3 || Tür==5) SL=OrderOpenPrice()+SL*Pp;
}
if (TP!=0) {
if (Tür==0 || Tür==2 || Tür==4) TP=OrderOpenPrice()+TP*Pp;
if (Tür==1 || Tür==3 || Tür==5) TP=OrderOpenPrice()-TP*Pp;
}
}

for(k=0;k<=TryToTrade;k++) {
PnC(StringConcatenate("Siparişte durak ayarlamaya çalışılıyor: ",Ticket," s/l: ",SL," t/p: ",TP),0);
if (IsTradeAllowed()) {
//TickeT=OrderModify(Ticket,NormalizeDouble(OrderOpenPrice(),MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(Symb,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(SyGITS),C0,DI ;
TicketT=OrderModify(Ticket,NormalizeDouble(OrderOpenPrice(),MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(SL,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(Symb_,MODE_0));
}else{ PnC(StringConcatenate("Sıra değiştirilemez ",k),0); uyku(3000); devam etmek; }
if (TickeT == true) { PnC(StringConcatenate("Modified order ",Ticket),0); kırmak; }
LastError=Fun_Error(GetLastError());
if (LastError==0) {
Yeniler(); Uyku(Bekleme Süresi);
if (k==TryToTrade) return(false); }
if (LastError==1) return(false);
if (LastError==2) { İş=yanlış; dönüş(yanlış); }
}
dönüş(doğru);

}

Şimdi sıradaki hata if (Type==0 || Type==2 || Type==4) SL=OrderOpenPrice()-SL*Pp; . OrderOpenPrice() işlevi aynı hatayı veriyor - İfade değerlendirilemedi. Ne bir PPC!!!
 
rabanik :
Şimdi sıradaki hata if (Type==0 || Type==2 || Type==4) SL=OrderOpenPrice()-SL*Pp; . OrderOpenPrice() işlevi aynı hatayı veriyor - İfade değerlendirilemedi. Ne bir PPC!!!

Hepsi anlaşıldı. Bu aptal soru için üzgünüm. bende ch var değişken SL türü int.

Ve yine double türüyle SL değerini almaya çalışıyorum. Ancak sistem bana 1 döndürür.

Teşekkür ederim.

 

Birisi bana danışmanın nasıl yapılacağını söyleyebilir mi, böylece danışmanın belirli bir yerden yaptığı iş, başka operatörleri yürütmeye devam etmeden başlangıcına geri döndü.

 

Merhaba. Bir sonraki soru, danışman satış için bir anlaşma açmaz. Görebilir misin?

 if ( Digits == 3 || Digits == 5 ) {sl=SL* 10 * Point ;}
         else if ( Digits == 4 || Digits == 2 ) {sl=SL* Point ;}
             if ( OrdersTotal ()== 0 )
              {
                 if ( Close [ 1 ]>TD2)
                 OrderSend ( Symbol (), OP_BUY ,Lot, Ask , 10 , Ask -sl, 0 , NULL ,Magic, 0 , clrBlue );
                 else if ( Close [ 1 ]<TD1)
                 OrderSend ( Symbol (), OP_SELL ,Lot, Bid , 10 , Bid +sl, 0 , NULL ,Magic, 0 , clrRed );
              }
 
6737998 :

Birisi bana danışmanın nasıl yapılacağını söyleyebilir mi, böylece danışmanın belirli bir yerden yaptığı iş, başka operatörleri yürütmeye devam etmeden başlangıcına geri döndü.

Оператор возврата return - Операторы - Основы языка - Справочник MQL4
Оператор возврата return - Операторы - Основы языка - Справочник MQL4
  • docs.mql4.com
Оператор возврата return - Операторы - Основы языка - Справочник MQL4
 
danil77783 :

Merhaba. Bir sonraki soru, danışman satış için bir anlaşma açmaz. Görebilir misin?

TD1 nedir ve nereye bir değer atanır?
 

Arkadaşlar bu durumdan doğru bir şekilde nasıl çıkılır... Gösterge CSV'den iki yatay çizgi çeker (Kırmızı - günün başından günün sonuna kadar) Mavi - Farklı fiyat seviyelerinde geçmiş günlerden gelen bir ışın . Ancak bu seviyelerin aynı değere/fiyata sahip olduğu günler vardır. Durumdan doğru bir şekilde nasıl çıkılır, böylece çizgiler çakıştığında, Işın (Mavi) görüntülenir ve Kırmızı çizgi grafikte görünmez, ancak fiziksel olarak bulunur ... yani. şeffaftı.

Şimdi - Draw_Level("Kırmızı", kırmızı, DRAW_NONE, STYLE_SOLID,0); çizgiyi çizmeyi durdurur, ancak altından gelen Işın da görünmez. Teşekkür ederim.