void OnTick()
{
......здесь работаем с закрытием (тралом и прочим)....
if ( Hour ()>= 10&&Hour ()<11) return ( 0 );
......остальной код, в частности для открытия....
}
выдает ошибку: 'return' - 'void' function returns a value
Vitaly Muzichenko :
voidOnTick()
{
......здесь работаем с закрытием (тралом и прочим)....
if (Hour()>=10 && Hour()<11) return;
......остальной код, в частности для открытия....
}
Merhaba, OrdersTotal() ne olacak? Emirlerin -1 sayısını içerdiğini, yani OrdersTotal()-1 ve her şeyin çalıştığını her zaman biliyordum, ancak bir program yazmaya başladım ve aniden bir emir artık dikkate alınmadı, OrdersTotal() istedi ve toplam sipariş sayısını verdi = 3, 3-1 değil. Ne oluyor?
Ama aslında, hayır, ilk sıra 1 olarak gider, yani numaralandırma sıfırdan değil birden başlamalı mı? Meta alıntılar yanlış bir şey mi yaptı yoksa ben aptal mıyım?
Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты". Ордер – это распоряжение на проведение торговой операции, а позиция является результатом одной или нескольких сделок.
Maksim Mihajlov : Merhaba, OrdersTotal() ne olacak? Emirlerin -1 sayısını içerdiğini, yani OrdersTotal()-1 ve her şeyin çalıştığını her zaman biliyordum, ancak bir program yazmaya başladım ve aniden bir emir artık dikkate alınmadı, OrdersTotal() istedi ve toplam sipariş sayısını verdi = 3, 3-1 değil. Ne oluyor?
Ama aslında, hayır, ilk sıra 1 olarak gider, yani numaralandırma sıfırdan değil birden başlamalı mı? Meta alıntılar yanlış bir şey mi yaptı yoksa ben aptal mıyım?
BEKLEMEDEKİ SİPARİŞLER ve POZİSYONLARI karıştırdınız. Yardım okumak. Sorunuzu daha kesin bir şekilde formüle edin: Tam olarak neyi hesaplamaya çalışıyorsunuz: BEKLEMEDEKİ SİPARİŞLER veya POZİSYONLAR? Ve evet, hiçbir şey değişmedi - ilk öğe dizini '0'dan başlıyor.
BEKLEMEDEKİ SİPARİŞLER ve POZİSYONLARI karıştırdınız. Yardım okumak. Sorunuzu daha kesin bir şekilde formüle edin: Tam olarak neyi hesaplamaya çalışıyorsunuz: BEKLEMEDEKİ SİPARİŞLER veya POZİSYONLAR? Ve evet, hiçbir şey değişmedi - ilk öğe dizini '0'dan başlıyor.
Bu yüzden iki seçeneği karşılaştırdım, ilkinde OrdersTotal()-1'i uyguladım ve sıfırdan yinelemeye başladım - bir hata aldım İkinci seçenekte birinden başladım ve tüm OrdersTotal()'ı aldım - bu sefer hata yok
Ekran görüntülerine bakın, OrdersTotal() öğesinin OrdersTotal()-1 değil, gerçek sipariş sayısını gösterdiğini görebilirsiniz...
Soru, OrdersTotal()'ın neden -1 değil de tamsipariş sayısını döndürdüğü, böyle mi olması gerekiyor yoksa yeni bir şey mi? Gerçekten de, bu durumda, numaralandırma sıfırdan değil, birden başlamalıdır!
Bu yüzden iki seçeneği karşılaştırdım, ilkinde OrdersTotal()-1'i uyguladım ve sıfırdan yinelemeye başladım - bir hata aldım İkinci seçenekte birinden başladım ve tüm OrdersTotal()'ı aldım - bu sefer hata yok
Ekran görüntülerine bakın, OrdersTotal() öğesinin OrdersTotal()-1 değil, gerçek sipariş sayısını gösterdiğini görebilirsiniz...
Soru, OrdersTotal()'ın neden -1 değil de tamsipariş sayısını döndürdüğü, böyle mi olması gerekiyor yoksa yeni bir şey mi? Gerçekten de, bu durumda, numaralandırma sıfırdan değil birden başlamalıdır!
Sanırım hatamı anladım... Bu durumda, -1 ile bir kayma vardır: if (OrderSelect(i-1,SELECT_BY_POS)==true){} Aptallık için özür dilerim, başka bir programdan bir satır aldım ve ofset dikkat etmedim!
Merhaba. Göstergeyi ayarlamak için yardımınıza ihtiyacım var. Göstergenin özü aşağıdaki gibidir. Önceki çubuğa göre fiyat artışı miktarını hesaplayın. Yıldız çubuğu sıfır olarak alınır. Yani açılış fiyatı kapanış fiyatına eşittir. Derlerken hata yok ama test ederken karakterin 80 20 satırında hata veriyor. Ayrıca eğri çizer sinyal hattı. Ancak ana arabelleğin yanlış hesaplanmasının nedeninin bu olduğunu düşünüyorum. Düzeltmeye yardım edin.
Некоторые технические индикаторы имеют несколько отрисовываемых на графике буферов. Нумерация индикаторных буферов начинается с 0. При копировании значений индикатора функцией CopyBuffer() в массив типа double для некоторых индикаторов можно указывать не номер копируемого буфера, а идентификатор этого буфера.
Emirlerin -1 sayısını içerdiğini, yani OrdersTotal()-1 ve her şeyin çalıştığını her zaman biliyordum, ancak bir program yazmaya başladım ve aniden bir emir artık dikkate alınmadı, OrdersTotal() istedi ve toplam sipariş sayısını verdi = 3, 3-1 değil.
Ne oluyor?
Yardımdaki döngünün olağan görünümü:
int toplam= SiparişlerToplam ();
for ( int pos=0;pos<total;pos++)
{
}
Yani ilk sıra sıfır değeri olarak gider.
Ama aslında, hayır, ilk sıra 1 olarak gider, yani numaralandırma sıfırdan değil birden başlamalı mı?
Meta alıntılar yanlış bir şey mi yaptı yoksa ben aptal mıyım?
Merhaba, OrdersTotal() ne olacak?
Emirlerin -1 sayısını içerdiğini, yani OrdersTotal()-1 ve her şeyin çalıştığını her zaman biliyordum, ancak bir program yazmaya başladım ve aniden bir emir artık dikkate alınmadı, OrdersTotal() istedi ve toplam sipariş sayısını verdi = 3, 3-1 değil.
Ne oluyor?
Yardımdaki döngünün olağan görünümü:
int toplam= SiparişlerToplam ();
for ( int pos=0;pos<total;pos++)
{
}
Yani ilk sıra sıfır değeri olarak gider.
Ama aslında, hayır, ilk sıra 1 olarak gider, yani numaralandırma sıfırdan değil birden başlamalı mı?
Meta alıntılar yanlış bir şey mi yaptı yoksa ben aptal mıyım?
BEKLEMEDEKİ SİPARİŞLER ve POZİSYONLARI karıştırdınız. Yardım okumak. Sorunuzu daha kesin bir şekilde formüle edin: Tam olarak neyi hesaplamaya çalışıyorsunuz: BEKLEMEDEKİ SİPARİŞLER veya POZİSYONLAR? Ve evet, hiçbir şey değişmedi - ilk öğe dizini '0'dan başlıyor.
Eklendi: örnek
Örnek: Pozisyonları ve Bekleyen Emirleri Hesaplayın
BEKLEMEDEKİ SİPARİŞLER ve POZİSYONLARI karıştırdınız. Yardım okumak. Sorunuzu daha kesin bir şekilde formüle edin: Tam olarak neyi hesaplamaya çalışıyorsunuz: BEKLEMEDEKİ SİPARİŞLER veya POZİSYONLAR? Ve evet, hiçbir şey değişmedi - ilk öğe dizini '0'dan başlıyor.
Eklendi: örnek
Örnek: Pozisyonları ve Bekleyen Emirleri Hesaplayın
Yani MQL4, MQL5 değil, mevduat ve piyasa diye bir ayrım yok!
Yani MQL4, MQL5 değil, mevduat ve piyasa ayrımı yok!
MQl5 forumuna yazıyorsunuz. Ana bölüme yazıyorsunuz. Konuya MQL5 hakkında yazıyorsunuz - doğal olarak MQL5 hakkında cevaplar alıyorsunuz.
Eski terminal ile ilgili sorular özel bir bölümde sorulmaktadır: MQL4 ve MetaTrader 4 . Oraya yazmaya devam et. Sorularınızı taşıyacağım.
Bu yüzden iki seçeneği karşılaştırdım, ilkinde OrdersTotal()-1'i uyguladım ve sıfırdan yinelemeye başladım - bir hata aldım
İkinci seçenekte birinden başladım ve tüm OrdersTotal()'ı aldım - bu sefer hata yok
Ekran görüntülerine bakın, OrdersTotal() öğesinin OrdersTotal()-1 değil, gerçek sipariş sayısını gösterdiğini görebilirsiniz...
Soru, OrdersTotal()'ın neden -1 değil de tamsipariş sayısını döndürdüğü, böyle mi olması gerekiyor yoksa yeni bir şey mi?
Gerçekten de, bu durumda, numaralandırma sıfırdan değil, birden başlamalıdır!
Bu yüzden iki seçeneği karşılaştırdım, ilkinde OrdersTotal()-1'i uyguladım ve sıfırdan yinelemeye başladım - bir hata aldım
İkinci seçenekte birinden başladım ve tüm OrdersTotal()'ı aldım - bu sefer hata yok
Ekran görüntülerine bakın, OrdersTotal() öğesinin OrdersTotal()-1 değil, gerçek sipariş sayısını gösterdiğini görebilirsiniz...
Soru, OrdersTotal()'ın neden -1 değil de tamsipariş sayısını döndürdüğü, böyle mi olması gerekiyor yoksa yeni bir şey mi?
Gerçekten de, bu durumda, numaralandırma sıfırdan değil birden başlamalıdır!
Sanırım hatamı anladım...
Bu durumda, -1 ile bir kayma vardır:
if (OrderSelect(i-1,SELECT_BY_POS)==true){}
Aptallık için özür dilerim, başka bir programdan bir satır aldım ve ofset dikkat etmedim!
//+------------------------------------------------------------------+ //| MSBB.mq4 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #include <MovingAverages.mqh> #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 clrGreen #property indicator_color2 clrRed #property indicator_width1 1 input int InpMSBBPeriod=3; // Period input ENUM_MA_METHOD InpMSBBMethod=MODE_SMA; // Method //--- indicator buffers double ExtMSBBBuffer[]; double ExtTempBuffer[]; double ExtPriceBuffer[]; double ExtSignalBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit(void) { //--- indicator buffers mapping IndicatorDigits(Digits-2); //--- drawing settings IndicatorBuffers(4); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,ExtMSBBBuffer); SetIndexBuffer(1,ExtSignalBuffer); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(2,ExtTempBuffer); SetIndexBuffer(2,ExtPriceBuffer); SetIndexDrawBegin(1,InpMSBBPeriod); //--- name for DataWindow and indicator subwindow label IndicatorShortName("MSBB("+IntegerToString(InpMSBBPeriod)+")"); SetIndexLabel(0,"MSBB"); SetIndexLabel(1,"Signal"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int i;//limit; //------ if(rates_total<=InpMSBBPeriod || InpMSBBPeriod<=2) return(0); /*//--- counting from 0 to rates_total ArraySetAsSeries(ExtMSBBBuffer,false); ArraySetAsSeries(ExtSignalBuffer,false); ArraySetAsSeries(open,false); ArraySetAsSeries(high,false); ArraySetAsSeries(low,false); ArraySetAsSeries(close,false);*/ //--- // limit=rates_total-prev_calculated; //if(prev_calculated>0) // limit++; //--- typical price and its moving average for(i=0; i<rates_total; i++) { ExtTempBuffer[i] = NormalizeDouble((close[i]-open[i])/Point(),2); ExtPriceBuffer[i] = NormalizeDouble((close[i+1]-open[i+1])/Point(),2); //ExtMSBBBuffer[i]=price_open+ExtTempBuffer[i]; //Print("ExtPriceBuffer[i] = ", ExtPriceBuffer[i]); if(ExtTempBuffer[i]==0) ExtMSBBBuffer[i]=0.0; if(ExtPriceBuffer[i]>0 && ExtTempBuffer[i]>0) { double price_open = NormalizeDouble((open[i]-open[i+1])/Point(),2); double price_close = NormalizeDouble((close[i]-close[i+1])/Point(),2); if((price_open<0 && price_close>0)||(price_open>0 && price_close<0)) ExtMSBBBuffer[i] = 0.0; if((price_open<0 && price_close<0)||(price_open>0 && price_close>0)) ExtMSBBBuffer[i]=ExtTempBuffer[i]+price_open; } if(ExtPriceBuffer[i]>0 && ExtTempBuffer[i]<0) { double price_open = NormalizeDouble((open[i]-close[i+1])/Point(),2); double price_close = NormalizeDouble((close[i]-open[i+1])/Point(),2); if((price_open<0 && price_close>0)||(price_open>0 && price_close<0)) ExtMSBBBuffer[i] = 0.0; if((price_open>0 && price_close>0)||(price_open<0 && price_close<0)) ExtMSBBBuffer[i]=ExtTempBuffer[i]+price_open; } if(ExtPriceBuffer[i]<0 && ExtTempBuffer[i]<0) { double price_open = NormalizeDouble((open[i]-open[i+1])/Point(),2); double price_close = NormalizeDouble((close[i]-close[i+1])/Point(),2); if((price_open<0 && price_close>0)||(price_open>0 && price_close<0)) ExtMSBBBuffer[i]=0.0; if((price_open<0 && price_close<0)||(price_open>0 && price_close>0)) ExtMSBBBuffer[i]=ExtTempBuffer[i]+price_open; } if(ExtPriceBuffer[i]<0 && ExtTempBuffer[i]>0) { double price_open = NormalizeDouble((open[i]-close[i+1])/Point(),2); double price_close = NormalizeDouble((close[i]-open[i+1])/Point(),2); if((price_open>0 && price_close<0)||(price_open<0 && price_close>0)) ExtMSBBBuffer[i]=0.0; if((price_open>0 && price_close>0)||(price_open<0 && price_close<0)) ExtMSBBBuffer[i]=ExtTempBuffer[i]+price_open; } //--- signal line counted in the 2-nd buffer //ExtSignalBuffer[i]=iMAOnArray(ExtMSBBBuffer,0,InpMSBBPeriod,0,InpMSBBMethod,0); SimpleMAOnBuffer(rates_total,prev_calculated,1,InpMSBBPeriod+2,ExtMSBBBuffer,ExtSignalBuffer); Print ("ExtSignalBuffer = ", ExtSignalBuffer[i]); //--- done } /* if(ExtPriceBuffer[i]>0||ExtPriceBuffer[i]<0) { ExtMSBBBuffer[i] = ExtPriceBuffer[i]+ExtTempBuffer[i]; Print("ExtMSBBBuffer[i] = ", ExtMSBBBuffer[i]); } if(ExtPriceBuffer[i]==0) { ExtMSBBBuffer[i] = 0.0; Print("ExtMSBBBuffer[i] = ", ExtMSBBBuffer[i]); } }*/ //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+