[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 863

 
IgorM :

terminal donması (elektrik kesintisi) durumunda önemli verileri/değişkenleri kaydetmenin en iyi yolu nedir?

- terminalin global değişkenleri? bir dosyaya?

- hangi sıklıkta? (özsermayenin son değeri ve danışmanın birkaç işareti (bool) önemlidir)

sorun nedir, her şey bir dizide ve dizi her işarette bir dosyada, başlatma sırasında dosyayı okuyoruz. ve sıfır sorun
 

Merhaba!

Açık pozisyonların neden değiştirilmediğini anlayamıyorum.Emir tipi belirtilmiş gibi görünüyor (sipariş seçme fonksiyonunda)

//+------------------------------------------- --------------------+
//| haberler trade.mq4 |
//| Telif Hakkı © 2010, MetaQuotes Yazılım A.Ş. |
//| http://www.metaquotes.net |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2010, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"


extern bool In_BUYSTOP=true;
harici int TakeProfit_buy=100;
harici int StopLoss_buy=5;
harici çift Lots_buy=0.01;
//+------------------------------------------- --------------------+
extern bool In_SELLSTOP=true;
harici int TakeProfit_sell=100;
harici int StopLoss_sell =5;
harici çift Lots_sell =0.01;
extern int Kar Düzeyi = 25; // - Duruşunun başabaş seviyesine taşınması için pozisyonun ulaşması gereken puan cinsinden kar seviyesi.
harici int SeviyeWKayıp = 1; // - Karı puan olarak LevelProfit seviyesine ulaştıktan sonra pozisyonun durduğu noktalarda başabaş seviyesi.

//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//----
int kârbuy=((Teklif - OrderOpenPrice())/Puan); // SATIN ALMAK
int kâr satış=((OrderOpenPrice()- Sor)/Puan); // SATMAK
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
//----
{
int bileti;
if (Teklif >iYüksek(NULL,PERIOD_D1,1))
{
if(SiparişToplam() < 1)
bilet=OrderSend(Symbol(),OP_SELLSTOP,Lots_sell,iHigh(NULL,PERIOD_D1,1),3,iHigh(NULL,PERIOD_D1,1)+StopLoss_sell*Point,iHigh(NULL,PERIOD_D1,1)-TakeProfit_sell*Point,Saat () == 21 && Dakika() == 59);
}
if (Sor<iLow(NULL,PERIOD_D1,1))
{
if(SiparişToplam() < 1)
bilet=OrderSend(Symbol(),OP_BUYSTOP,Lots_buy,iLow(NULL,PERIOD_D1,1),3,iLow(NULL,PERIOD_D1,1)-StopLoss_buy*Point,iLow(NULL,PERIOD_D1,1)+TakeProfit_buy*Point,Saat () == 21 && Dakika() == 59);
}
//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
dönüş(0);
}
//+------------------------------------------- --------------------+
if(OrderSelect(0, SELECT_BY_POS,MODE_TRADES)==true)
{
int order_type=OrderType();
order_type=OP_SELL;
int kâr satış=((OrderOpenPrice()- Sor)/Puan);
if (kâr satışı>5)
bilet=OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,Mavi);
dönüş(0);
}
if(OrderSelect(0, SELECT_BY_POS,MODE_TRADES)==true)
{
order_type=OP_BUY;
int kârbuy=((Teklif - OrderOpenPrice())/Puan);
if (kâr satın al>5)
int stopmodify=OrderOpenPrice();
OrderModify(OrderTicket(),OrderOpenPrice(),stopmodify,OrderTakeProfit(),0,Mavi);
dönüş(0);
}
 

Sevgili geliştiriciler, size bir soru.

Bir Uzman Danışmandan göstergeyi çağırırken global gösterge değişkeninin düzgün çalışmasını sağlayamıyorum.

İşte gösterge kodu (sadece sorunu anlamak için gerekli olan satırlar bırakılmıştır).

 double   price;
double   PriceBuffer[];

int init()
{
   SetIndexBuffer ( 0 ,PriceBuffer);
   return ( 0 );
}
int start()
{
   int limit, i;
   int counted_bars=IndicatorCounted();
   
   //---- last counted bar will be recounted
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;

   for (i=limit- 1 ; i>= 0 ; i--)
   {
        PriceBuffer[i] = price;
        price = iClose( NULL , 0 ,i);
   }
   return ( 0 );
}

Her çubukta, geçerli fiyatı global değişken fiyatta saklar ve bir sonraki çubukta görüntüler. Bu nedenle, fiyat grafiğini bir çubuk gecikmeli olarak görmeliyiz. Göstergeyi grafiğe eklerseniz, her şey dürüstçe çalışır:

Ancak bu gösterge Uzman Danışmandan çağrılır ve görsel test yapılırsa, testin sonunda şunu göreceğiz: gösterge amaçlanana sadece biraz benzer.

Şimdi gösterge görsel test tablosunda yeniden hesaplanırsa (bunu yapmak için, örneğin özelliklerini açıp kapatın), her şey normale döner - yine ilk resmi görürüz.

Neyi yanlış yapıyorum?

Arandı, cevap bulunamadı.

MT4 Sürüm 4.00 Yapı 226 kullanıyorum.

 
Bunun tarihte kene olmamasından kaynaklandığını düşünüyorum. İşte eksik olan şey. Gerçek zamanlı olarak, her şey açık olmalıdır! ;)
 

Merhaba, bana kodun doğruluğunun nerede olmadığını söyle, çünkü komut dosyası çalışırken, günlükte böyle bir hata var:

15:40:29 11dP_real_symbol EURUSD,H4: <--- 2 doğru grafik bulundu. --->

15:40:29 11dP_real_symbol EURUSD,H4: <--- Sonuçları görüntülemek için EURUSD,M1002 grafiğini açın --->

15:40:29 11dP_real_symbol EURUSD,H4: MarketInfo işlevi için sembol adı bir dize olmalıdır

15:40:29 11dP_real_symbol: FileWriteString işlevi için boş dize parametresi

15:40:29 11dP_real_symbol EURUSD,H4: MarketInfo işlevi için sembol adı bir dize olmalıdır

15:40:29 11dP_real_symbol EURUSD,H4: <--- Sonuçları görüntülemek için grafiği açın, M1002 --->

15:40:29 11dP_real_symbol EURUSD,H4: WindowHandle işlevi için ilk parametre başlatılmış bir dize olmalıdır

15:40:30 11dP_real_symbol EURUSD,H4: WindowHandle işlevi için ilk parametre başlatılmış bir dize olmalıdır

15:40:31 11dP_real_symbol EURUSD,H4: WindowHandle işlevi için ilk parametre, başlatılmış bir dize olmalıdır

Aşağıdaki kodu ekliyorum:

Dosyalar:
11dp.mq4  15 kb
 
IgorM :

Terminal donması (elektrik kesintisi) durumunda önemli verileri/değişkenleri kaydetmenin en iyi yolu nedir?

- genel uçbirim değişkenleri ? bir dosyaya?

- hangi sıklıkta? (özsermayenin son değeri ve danışmanın birkaç işareti (bool) önemlidir)


Diğer değişkenlerden farklı olarak, bir GV değişkeni sadece herhangi bir programdan oluşturulamaz, aynı zamanda silinebilir. GV değişkeninin değeri, istemci terminali kapatıldıktan sonra bile bilgisayarın sabit diskine kaydedilir. Bir kez bildirildiğinde, GV değişkeni, son erişim anından itibaren 4 hafta boyunca müşteri terminalinde bulunur. Belirtilen süre boyunca programlardan hiçbiri GV değişkenine erişmediyse, istemci terminali tarafından silinir. Bir GV değişkeni yalnızca double türünde olabilir.
 
etroplus :

Merhaba!

Açık pozisyonların neden değiştirilmediğini anlayamıyorum.Emir tipi belirtilmiş gibi görünüyor (sipariş seçme fonksiyonunda)

//+------------------------------------------- --------------------+
//| haberler trade.mq4 |
//| Telif Hakkı © 2010, MetaQuotes Yazılım A.Ş. |
//| http://www.metaquotes.net |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2010, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"


extern bool In_BUYSTOP=true;
harici int TakeProfit_buy=100;
harici int StopLoss_buy=5;
harici çift Lots_buy=0.01;
//+------------------------------------------- --------------------+
extern bool In_SELLSTOP=true;
harici int TakeProfit_sell=100;
harici int StopLoss_sell =5;
harici çift Lots_sell =0.01;
extern int Kar Düzeyi = 25; // - Duruşunun başabaş seviyesine taşınması için pozisyonun ulaşması gereken puan cinsinden kar seviyesi.
harici int SeviyeWKayıp = 1; // - Karı puan olarak LevelProfit seviyesine ulaştıktan sonra pozisyonun durduğu noktalarda başabaş seviyesi.

//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//----
int kârbuy=((Teklif - OrderOpenPrice())/Puan); // BUY gereksiz, önce tüm değişkenler 0
int kâr satış=((OrderOpenPrice()- Sor)/Puan); // SATMAK
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
//----
{
int bileti;
if (Teklif >iYüksek(NULL,PERIOD_D1,1))
{
if(SiparişToplam() < 1)
bilet=OrderSend(Symbol(),OP_SELLSTOP,Lots_sell,iHigh(NULL,PERIOD_D1,1),3,iHigh(NULL,PERIOD_D1,1)+StopLoss_sell*Point,iHigh(NULL,PERIOD_D1,1)-TakeProfit_sell*Point,Saat () == 21 && Dakika() == 59);
}
if (Sor<iLow(NULL,PERIOD_D1,1))
{
if(SiparişToplam() < 1)
bilet=OrderSend(Symbol(),OP_BUYSTOP,Lots_buy,iLow(NULL,PERIOD_D1,1),3,iLow(NULL,PERIOD_D1,1)-StopLoss_buy*Point,iLow(NULL,PERIOD_D1,1)+TakeProfit_buy*Point,Saat () == 21 && Dakika() == 59);
}
//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
dönüş(0);
}
//+------------------------------------------- --------------------+
if(OrderSelect(0, SELECT_BY_POS,MODE_TRADES)==true)
{
int order_type=OrderType();
order_type=OP_SELL;// belki eğer(order_type==OP_SELL), o zaman daha fazla parantez gerekli olacaktır
int kâr satış=((OrderOpenPrice()- Sor)/Puan);
if (profitsell>5)// her tikte sırayı değiştirmeyi deneyecek misiniz?
bilet=OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,Mavi);
dönüş(0);
}
if(OrderSelect(0, SELECT_BY_POS,MODE_TRADES)==true)
{
order_type=OP_BUY;
int kârbuy=((Teklif - OrderOpenPrice())/Puan);
if (kâr satın al>5)
int stopmodify=OrderOpenPrice();
OrderModify(OrderTicket(),OrderOpenPrice(),stopmodify,OrderTakeProfit(),0,Mavi);
dönüş(0);
}
 
Merhaba, bana kodun doğruluğunun nerede olmadığını söyle, çünkü komut dosyası çalışırken, günlükte böyle bir hata var:


15:40:29 11dP_real_symbol EURUSD,H4: <--- 2 doğru grafik bulundu. --->

15:40:29 11dP_real_symbol EURUSD,H4: <--- Sonuçları görüntülemek için EURUSD,M1002 grafiğini açın --->

15:40:29 11dP_real_symbol EURUSD,H4: MarketInfo işlevi için sembol adı bir dize olmalıdır

15:40:29 11dP_real_symbol: FileWriteString işlevi için boş dize parametresi

15:40:29 11dP_real_symbol EURUSD,H4: MarketInfo işlevi için sembol adı bir dize olmalıdır

15:40:29 11dP_real_symbol EURUSD,H4: <--- Sonuçları görüntülemek için grafiği açın, M1002 --->

15:40:29 11dP_real_symbol EURUSD,H4: WindowHandle işlevi için ilk parametre başlatılmış bir dize olmalıdır

15:40:30 11dP_real_symbol EURUSD,H4: WindowHandle işlevi için ilk parametre başlatılmış bir dize olmalıdır

15:40:31 11dP_real_symbol EURUSD,H4: WindowHandle işlevi için ilk parametre, başlatılmış bir dize olmalıdır

Aşağıdaki kodu ekliyorum:
Dosyalar:
11dp_1.mq4  15 kb
 

Lütfen bana "OP BUY" değişkeninin ne anlama geldiğini söyleyin

burada iken(fark>tokatlamak)
( OrderSend (string sembolü, OP_BUY, hacim, çift fiyat, kayma, Bid-stoploss*Puan,
Bid+takeprofit*Point, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=Kırmızı) )

while(0-fark>span)
( OrderSend (string sembolü, OP_SELL, hacim, çift fiyat, kayma, Ask+stoploss*Puan,
Ask-takeprofit*Point, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=Black)) )

 
mql4'te bir grafikte bir nokta nasıl yazılır? herhangi bir zaman dilimi için yerinde kalması için fiyatı ve zamanı yazmanız gerekir