intOnCalculate ( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &Op[],
constdouble &Hi[],
constdouble &Lo[],
constdouble &Cl[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
ArraySetAsSeries (time, true );
ArraySetAsSeries (Op, true );
ArraySetAsSeries (Hi, true );
ArraySetAsSeries (Lo, true );
ArraySetAsSeries (Cl, true );
//--- double mas[];
if (prev_calculated== 0 )
{
int prices1= CopyOpen ( Symbol (), 0 , 0 , Bars ( _Symbol , _Period ),Op);
int prices2= CopyHigh ( Symbol (), 0 , 0 , Bars ( _Symbol , _Period ),Hi);
int prices3= CopyLow ( Symbol (), 0 , 0 , Bars ( _Symbol , _Period ),Lo);
int prices4= CopyClose ( Symbol (), 0 , 0 , Bars ( _Symbol , _Period ),Cl);
int prices5= CopyTime ( Symbol (), 0 , 0 , Bars ( _Symbol , _Period ),time);
}
else
{
int prices1= CopyOpen ( Symbol (), 0 , 0 , 1 ,Op);
int prices2= CopyHigh ( Symbol (), 0 , 0 , 1 ,Hi);
int prices3= CopyLow ( Symbol (), 0 , 0 , 1 ,Lo);
int prices4= CopyClose ( Symbol (), 0 , 0 , 1 ,Cl);
int prices5= CopyTime ( Symbol (), 0 , 0 , 1 ,time);
}
for ( int i=rates_total- 1 ;i>= 0 && ! IsStopped ();) {
mas[i]=Op[i]/Cl[i];
i--;
}
//--- return value of prev_calculated for next callreturn (rates_total);
}
//+-------------------------------
Bu şekilde basitleştirilmiş, CopyOpen, anladığım kadarıyla OnCalculate için gereksizdir, ancak bu nedenle yalnızca terminal penceresinden geçmişi mi görüyor?
Basitleştirilmiş, CopyOpen, anladığım kadarıyla OnCalculate için gereksiz, ancak yalnızca terminal penceresinden geçmişi mi görüyor?
Mas dizisi, her bir onay işaretinde sıfır boyutunda oluşturulur ve daha sonra boyutunu hiçbir yerde değiştirmez. Bu nedenle, ona herhangi bir erişim, bir dizinin sınırların dışına çıkmasına neden olur.
Sorunu çözmek için, ya boyutu geçmişin tüm çubuklarının okumalarına uyacak şekilde değiştirmeniz ya da gösterge arabelleğine bağlamanız gerekir (buna göre, bir global program değişkeni olarak bildirilmelidir). Sonuçta, doğru anlarsam, gösterge kullanılarak görüntülenmesi gereken bu değerlerdir.
Mas dizisi, her bir onay işaretinde sıfır boyutunda oluşturulur ve daha sonra boyutunu hiçbir yerde değiştirmez. Bu nedenle, ona herhangi bir erişim, bir dizinin sınırların dışına çıkmasına neden olur.
Sorunu çözmek için, ya boyutu geçmişin tüm çubuklarının okumalarına uyacak şekilde değiştirmeniz ya da gösterge arabelleğine bağlamanız gerekir (buna göre, bir global program değişkeni olarak bildirilmelidir). Sonuçta, doğru anlarsam, gösterge kullanılarak görüntülenmesi gereken bu değerlerdir.
Yanlışlığım, mas[] gerçekten küresel bir dizi olmalı, ancak gösterge arabelleği de uygun değil, bunun yerine çok boyutlu bir ara dizi olacak. Gösterge arabelleği aracılığıyla değil, M5 için en uygun dizi boyutunu belirlemenin en iyi yolu nedir?
Yanlışlığım, mas[] gerçekten küresel bir dizi olmalı, ancak gösterge arabelleği de uygun değil, bunun yerine çok boyutlu bir ara dizi olacak. Gösterge arabelleği aracılığıyla değil, M5 için en uygun dizi boyutunu belirlemenin en iyi yolu nedir?
Çok boyutlu hakkında - anlamadım. Sonuçta, tek boyutlu bir diziden bahsediyoruz. Ayrıca, MQL4'te maksimum dizi boyutları 4'tür.
Zaman serileriyle aynı boyutta bir dizi yapmak için, boyutunu, gerekli sembol ve periyodun grafiğinde bulunan çubukların sayısına göre değiştirmeniz gerekir:
double fArray[];
int nBarsCnt = iBars (<символ>, <таймфрейм>);
if ( ArrayResize (fArray, nBarsCnt) != nBarsCnt)
{
// Не удалось изменить размер массиваreturn ;
}
ArraySetAsSeries (fArray, true );
Yanlışlığım, mas[] gerçekten küresel bir dizi olmalı, ancak gösterge arabelleği de uygun değil, bunun yerine çok boyutlu bir ara dizi olacak. Gösterge arabelleği aracılığıyla değil, M5 için en uygun dizi boyutunu belirlemenin en iyi yolu nedir?
Dizileri neden gösterge arabellekleri olarak kullanmak istemiyorsunuz? İşinizi kolaylaştıran bir alt sistem tarafından izlenirler.
Ve göstergenin ara dizi-tamponunun yapılması kolaydır:
{
price= High [ 1 ]+OrderPoint* Point ;
stoploss= Low [ 1 ]- Point ;
takeprofit=price+price-stoploss;
OrderSend ( Symbol (), OP_BUYSTOP , 1 ,price, 3 ,stoploss,takeprofit);
}
Lütfen bana neyin ve nereye eklenmesi gerektiğini söyleyin, böylece fiyat zaten zararı durdurmayı geçmişse (bu açılmamış emrin) açılmamış bekleyen emrin silinmesi için.
Aptalca soru için özür dilerim, cevap ararken forumlarda kayboldum.
ve nasıl doğru yapılır?
Bunu nasıl yapıyorsun?
Bu şekilde basitleştirilmiş, CopyOpen, anladığım kadarıyla OnCalculate için gereksizdir, ancak bu nedenle yalnızca terminal penceresinden geçmişi mi görüyor?
Basitleştirilmiş, CopyOpen, anladığım kadarıyla OnCalculate için gereksiz, ancak yalnızca terminal penceresinden geçmişi mi görüyor?
Mas dizisi, her bir onay işaretinde sıfır boyutunda oluşturulur ve daha sonra boyutunu hiçbir yerde değiştirmez. Bu nedenle, ona herhangi bir erişim, bir dizinin sınırların dışına çıkmasına neden olur.
Sorunu çözmek için, ya boyutu geçmişin tüm çubuklarının okumalarına uyacak şekilde değiştirmeniz ya da gösterge arabelleğine bağlamanız gerekir (buna göre, bir global program değişkeni olarak bildirilmelidir). Sonuçta, doğru anlarsam, gösterge kullanılarak görüntülenmesi gereken bu değerlerdir.
Basitleştirilmiş, CopyOpen, anladığım kadarıyla OnCalculate için gereksiz, ancak yalnızca terminal penceresinden geçmişi mi görüyor?
Misal:
Mas dizisi, her bir onay işaretinde sıfır boyutunda oluşturulur ve daha sonra boyutunu hiçbir yerde değiştirmez. Bu nedenle, ona herhangi bir erişim, bir dizinin sınırların dışına çıkmasına neden olur.
Sorunu çözmek için, ya boyutu geçmişin tüm çubuklarının okumalarına uyacak şekilde değiştirmeniz ya da gösterge arabelleğine bağlamanız gerekir (buna göre, bir global program değişkeni olarak bildirilmelidir). Sonuçta, doğru anlarsam, gösterge kullanılarak görüntülenmesi gereken bu değerlerdir.
Yanlışlığım, mas[] gerçekten küresel bir dizi olmalı, ancak gösterge arabelleği de uygun değil, bunun yerine çok boyutlu bir ara dizi olacak. Gösterge arabelleği aracılığıyla değil, M5 için en uygun dizi boyutunu belirlemenin en iyi yolu nedir?
Yanlışlığım, mas[] gerçekten küresel bir dizi olmalı, ancak gösterge arabelleği de uygun değil, bunun yerine çok boyutlu bir ara dizi olacak. Gösterge arabelleği aracılığıyla değil, M5 için en uygun dizi boyutunu belirlemenin en iyi yolu nedir?
Çok boyutlu hakkında - anlamadım. Sonuçta, tek boyutlu bir diziden bahsediyoruz. Ayrıca, MQL4'te maksimum dizi boyutları 4'tür.
Zaman serileriyle aynı boyutta bir dizi yapmak için, boyutunu, gerekli sembol ve periyodun grafiğinde bulunan çubukların sayısına göre değiştirmeniz gerekir:
Yanlışlığım, mas[] gerçekten küresel bir dizi olmalı, ancak gösterge arabelleği de uygun değil, bunun yerine çok boyutlu bir ara dizi olacak. Gösterge arabelleği aracılığıyla değil, M5 için en uygun dizi boyutunu belirlemenin en iyi yolu nedir?
Dizileri neden gösterge arabellekleri olarak kullanmak istemiyorsunuz? İşinizi kolaylaştıran bir alt sistem tarafından izlenirler.
Ve göstergenin ara dizi-tamponunun yapılması kolaydır:
Merhaba.
Platformda hacimler tıklanıyor, gerçek hacimler olacak mı?
Merhaba.
Platformda hacimler tıklım tıklım, gerçek hacimler olacak mı?
olmaz. Bazı brokerlerin gerçek hacimler sağladığı MT5'i kullanın.
Tünaydın!
Lütfen aşağıdaki sorunla bana yardım edin:
1) Belirli koşullar yerine getirildikten sonra bekleyen bir emir açılır:
{ price= High [ 1 ]+OrderPoint* Point ; stoploss= Low [ 1 ]- Point ; takeprofit=price+price-stoploss; OrderSend ( Symbol (), OP_BUYSTOP , 1 ,price, 3 ,stoploss,takeprofit); }Lütfen bana neyin ve nereye eklenmesi gerektiğini söyleyin, böylece fiyat zaten zararı durdurmayı geçmişse (bu açılmamış emrin) açılmamış bekleyen emrin silinmesi için.
Aptalca soru için özür dilerim, cevap ararken forumlarda kayboldum.
Şimdiden teşekkür ederim!