Anladığım kadarıyla, takip etmesi gereken manuel olarak açılan pozisyonun biletini danışmana bir şekilde belirtmeniz gerekiyor.
Danışmana yeni açılan pozisyonların takibini ekleyin ve sihir yoksa manuel olarak açılır. Aynı zamanda, EA, bu pozisyonu açmak için fiyat ve açılış çubuğundaki simgeyi ayarlamalıdır. Nesne adı, bu tür tüm nesneler için nesnenin ortak adını içeren bir önek içermelidir, örneğin - "manuel_" ve konum bileti mevcut olmalıdır. Sonuç olarak, oluşturulan nesnenin adı şu şekilde olabilir: "manuel_12345678". Burada: manual_ - önek, 12345678 - pozisyon bileti.
Expert Advisor'a bir OnChartEvent() ekleyin ve nesne üzerindeki fare tıklama olayını izleyin. Nesnenin adını analiz edin ve bir manual_ alt dizisi varsa, manual_'den sonraki sayının ne olduğuna bakın. Bu numara, tıkladığınız pozisyonun biletidir.
Ayrıca, bu bir teknik meselesidir: Expert Advisor/terminal/bilgisayar/dünya yeniden başlatıldığında kaybolmaması için bulunan numarayı kaydetmeniz gerekir... Örneğin, terminalin kaynaklarında veya global değişkenlerinde .
EA bu kaynağı okumalı ve trol etmesi gereken pozisyonların biletlerini ondan almalıdır.
Trol döngüsünde, seçilen pozisyonun biletini alın ve kayıtlı bilet listesinde bu numarayı arayın. Böyle bir bilet bulunursa, bu biletin bulunduğu pozisyon izlenmelidir.
Pozisyon sayısını değiştirirken, kapalı pozisyonun biletini kontrol etmeniz ve kayıtlı listede bulmanız gerekir. Listede böyle bir bilet varsa, bu listeden çıkarılmalıdır - pozisyon artık orada değildir ve biletinin takip eden biletler listesinde hiçbir ilgisi yoktur.
Bunun gibi bir şey. Dizime mantık yazdım, bu yüzden ne olduğunu hesaba katamadım ...
Açıklama için teşekkürler, neden bahsettiğinizi şimdi anladım.
Şimdiye kadar, danışmanı kullanmak için kayma hakkında fazla bir şey bilmiyorum - mql derslerinde 3'ün ayarlanması önerilir (EURUSD ile ilgiliydi), ancak para birimlerinin likiditesi farklıdır ve hareket hızı aynıdır. Dolar çiftleri ve haçlar için sakin bir piyasada hangi rakamlar yönlendirilebilir?
CopyOpen , CopyHigh, CopyLow ve CopyClose işlevlerini kullanarak çok boyutlu bir arabelleği doldurmak mümkün müdür, yoksa yapamam. Açıklama, dinamik bir diziye kopyalandığını söylüyor - ve dinamik bir dizi çok boyutlu MQL5 olabilir
Alexandr Sokolov : CopyOpen , CopyHigh, CopyLow ve CopyClose işlevlerini kullanarak çok boyutlu bir arabelleği doldurmak mümkün müdür, yoksa yapamam. Açıklama, dinamik bir diziye kopyalandığını söylüyor - ve dinamik bir dizi çok boyutlu MQL5 olabilir
Alexandr Sokolov : CopyOpen , CopyHigh, CopyLow ve CopyClose işlevlerini kullanarak çok boyutlu bir arabelleği doldurmak mümkün müdür, yoksa yapamam. Açıklama, dinamik bir diziye kopyalandığını söylüyor - ve dinamik bir dizi çok boyutlu MQL5 olabilir
Получает в массив rates_array исторические данные структуры MqlRates указанного символа-периода в указанном количестве. Отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества данных рекомендуется в качестве приемного...
Merhaba. Birkaç kişiden bir Uzman Danışman oluşturmaya çalıştım, her şey strateji test cihazında olması gerektiği gibi çalışıyor (görselleştirme modunda kontrol ettim). Demo hesap açtım ve periyodik olarak şu sorun çıkıyor, sipariş açılıp hemen siliniyor ve saat değişene kadar bir saat boyunca böyle devam ediyor. Aynı zamanda bir sipariş girme ve silme koşulunun oluştuğunu düşündüm, ancak burada silme yalnızca zamanla, bu bloğun tamamını sildiğimde hata kaybolmadı. Kimse için zor değilse, bana hatanın nerede olduğunu söyleyin.
int start()
{
// модификация до безубыткаif ( MathAbs (( OrderOpenPrice ()- Ask )/ Point ) > BUP && CountBuy() > 0 )
ModifyLoss();
if ( MathAbs (( OrderOpenPrice ()- Bid )/ Point ) > BUP && CountSell() > 0 )
ModifyLoss();
CurrHour = TimeHour ( TimeCurrent ());
if (CloseByTime == true && DayOfWeek () == DayEnd && CurrHour >= CloseHour)
{
if (CountTrades() > 0 || CountStop() > 0 ) CloseTrades();
}
if (DayStart == DayOfWeek () && CurrHour == StartHour && ((!SetLimits && CountStop() == 0 ) || (SetLimits && CountLimits() == 0 )) && CountTrades() == 0 )
{
high = iHigh ( Symbol (), 0 , 1 );
low = iLow ( Symbol (), 0 , 1 );
spread = MarketInfo ( Symbol (), MODE_SPREAD );
if ((high - low)/ Point <= MaxPips && spread < Maxspread)
{
buy = NormalizeDouble (high + Indent* Point , Digits );
sell = NormalizeDouble (low - Indent* Point , Digits );
if (FixedLot > 0 )
Lots = FixedLot;
else Lots = GetLots();
if (UseMartingale == true )
{
if ( AccountBalance () < abalance)
Lots = getlotlast();
else abalance = AccountBalance ();
}
if (!SetLimits)
{
tp_sell = ND(sell-spread* Point - TPP* Point );
tp_buy = ND(buy + spread* Point + TPP* Point );
sl_sell = ND(sell + SLP* Point +spread* Point );
sl_buy = ND(buy-SLP* Point -spread* Point );
if ( iClose ( NULL , 1440 , 1 ) < iMA ( NULL , 1440 ,PeriodMA, 0 , MODE_EMA , PRICE_CLOSE , 1 ))
OrderSendReliable( Symbol (), OP_SELLSTOP , Lots, (sell-spread* Point ), Slippage, sl_sell, tp_sell, comment, Magic, 0 , Red);
else
OrderSendReliable( Symbol (), OP_BUYSTOP , Lots, (buy+spread* Point ), Slippage, sl_buy, tp_buy, comment, Magic, 0 , Blue);
} else
{
tp_sell = ND(sell - MathAbs (buy-sell)*TakeProfitK);
tp_buy = ND(buy + MathAbs (buy-sell)*TakeProfitK);
sl_sell = ND(buy + MathAbs (buy-sell)*StopLossK);
sl_buy = ND(sell - MathAbs (buy-sell)*StopLossK);
OrderSendReliable( Symbol (), OP_SELLLIMIT , Lots, buy, Slippage, sl_sell, tp_sell, comment, Magic, 0 , Red);
OrderSendReliable( Symbol (), OP_BUYLIMIT , Lots, sell, Slippage, sl_buy, tp_buy, comment, Magic, 0 , Blue);
}
}
}
return ( 0 );
}
Merhaba. Birkaç kişiden bir Uzman Danışman oluşturmaya çalıştım, her şey strateji test cihazında olması gerektiği gibi çalışıyor (görselleştirme modunda kontrol ettim). Demo hesap açtım ve periyodik olarak şu sorun çıkıyor, sipariş açılıp hemen siliniyor ve saat değişene kadar bir saat boyunca böyle devam ediyor. Aynı zamanda bir sipariş girme ve silme koşulunun oluştuğunu düşündüm, ancak burada silme yalnızca zamanla, bu bloğun tamamını sildiğimde hata kaybolmadı. Kimse için zor değilse, hatanın nerede olduğunu söyleyin.
OrderSelect aracılığıyla bir döngü içinde yineleme yapmak gerekir
int start()
{
// модификация до безубыткаif ( MathAbs (( OrderOpenPrice ()- Ask )/ Point ) > BUP && CountBuy() > 0 )
ModifyLoss();
if ( MathAbs (( OrderOpenPrice ()- Bid )/ Point ) > BUP && CountSell() > 0 )
ModifyLoss();
Anladığım kadarıyla koşul oluştuğunda seçim sırasının kullanıldığı modifikasyon fonksiyonuna geçiş oluyor. Evet ve ben de bu parçayı tamamen kaldırmaya çalıştım, yine de hata devam ediyor ve bir durumun meydana geldiği her zaman açık değil. yine, test cihazında her şeyin yolunda gitmesi utanç verici
Merhaba. Birkaç kişiden bir Uzman Danışman oluşturmaya çalıştım, her şey strateji test cihazında olması gerektiği gibi çalışıyor (görselleştirme modunda kontrol ettim). Demo hesap açtım ve periyodik olarak şu sorun çıkıyor, sipariş açılıp hemen siliniyor ve saat değişene kadar bir saat boyunca böyle devam ediyor. Aynı zamanda bir sipariş girme ve silme koşulunun oluştuğunu düşündüm, ancak burada silme yalnızca zamanla, bu bloğun tamamını sildiğimde hata kaybolmadı. Kimse için zor değilse, bana hatanın nerede olduğunu söyleyin.
Print(__FUNCTION__) ticaretini kontrol eden fonksiyonlarda veya Print(böyle ve-böyle bir blok, böyle-ve-bu parametreler) bloklarında belirtin. İşlevlerin/blokların hangi sırayla çalıştığını görün. İşe yarayan, ancak olmaması gereken ilk şey, o zaman onun için soru bu. "Burada eşzamanlı çalışması için oldukça uyumsuz koşulları tanımladım" gerçeğine güvenmek buna değmez. Belki bloğun çalışmaması gerekiyordu, ancak dış parametreler açılmasına izin verdi, belki de bloğun içindeki bir şey çalışmamalıydı.
Lütfen test cihazında çalışabilecek bir düğme gösterin. Örneğin hangi bayrağın kaldırılacağına tıklayın ticaret = doğru; tekrar basın? takas=yanlış;
OnTick()'te düğmenin tıklanmasını kontrol edin. OnTick() içindeki test edici - kontrol çalışıyorsa, koşullu olarak yapılabilir, ancak gerçek hayatta bu kontrolün bloğu yürütülmez ve OnChartEvent() içinde kontrol olur.
Anladığım kadarıyla, takip etmesi gereken manuel olarak açılan pozisyonun biletini danışmana bir şekilde belirtmeniz gerekiyor.
Açıklama için teşekkürler, neden bahsettiğinizi şimdi anladım.
Şimdiye kadar, danışmanı kullanmak için kayma hakkında fazla bir şey bilmiyorum - mql derslerinde 3'ün ayarlanması önerilir (EURUSD ile ilgiliydi), ancak para birimlerinin likiditesi farklıdır ve hareket hızı aynıdır. Dolar çiftleri ve haçlar için sakin bir piyasada hangi rakamlar yönlendirilebilir?
CopyOpen , CopyHigh, CopyLow ve CopyClose işlevlerini kullanarak çok boyutlu bir arabelleği doldurmak mümkün müdür, yoksa yapamam. Açıklama, dinamik bir diziye kopyalandığını söylüyor - ve dinamik bir dizi çok boyutlu MQL5 olabilir
tek boyutlu bir dizi kullanın ...
CopyOpen , CopyHigh, CopyLow ve CopyClose işlevlerini kullanarak çok boyutlu bir arabelleği doldurmak mümkün müdür, yoksa yapamam. Açıklama, dinamik bir diziye kopyalandığını söylüyor - ve dinamik bir dizi çok boyutlu MQL5 olabilir
Yapıları anlamakta zorluk çekiyorsanız, ArrayCopyRates kullanabilirsiniz.
Anlamakla ilgili her şey yolundaysa, o zaman daha iyidir
Merhaba. Birkaç kişiden bir Uzman Danışman oluşturmaya çalıştım, her şey strateji test cihazında olması gerektiği gibi çalışıyor (görselleştirme modunda kontrol ettim). Demo hesap açtım ve periyodik olarak şu sorun çıkıyor, sipariş açılıp hemen siliniyor ve saat değişene kadar bir saat boyunca böyle devam ediyor. Aynı zamanda bir sipariş girme ve silme koşulunun oluştuğunu düşündüm, ancak burada silme yalnızca zamanla, bu bloğun tamamını sildiğimde hata kaybolmadı. Kimse için zor değilse, bana hatanın nerede olduğunu söyleyin.
Merhaba. Birkaç kişiden bir Uzman Danışman oluşturmaya çalıştım, her şey strateji test cihazında olması gerektiği gibi çalışıyor (görselleştirme modunda kontrol ettim). Demo hesap açtım ve periyodik olarak şu sorun çıkıyor, sipariş açılıp hemen siliniyor ve saat değişene kadar bir saat boyunca böyle devam ediyor. Aynı zamanda bir sipariş girme ve silme koşulunun oluştuğunu düşündüm, ancak burada silme yalnızca zamanla, bu bloğun tamamını sildiğimde hata kaybolmadı. Kimse için zor değilse, hatanın nerede olduğunu söyleyin.
OrderSelect aracılığıyla bir döngü içinde yineleme yapmak gerekir
Anladığım kadarıyla koşul oluştuğunda seçim sırasının kullanıldığı modifikasyon fonksiyonuna geçiş oluyor. Evet ve ben de bu parçayı tamamen kaldırmaya çalıştım, yine de hata devam ediyor ve bir durumun meydana geldiği her zaman açık değil. yine, test cihazında her şeyin yolunda gitmesi utanç verici
Merhaba. Birkaç kişiden bir Uzman Danışman oluşturmaya çalıştım, her şey strateji test cihazında olması gerektiği gibi çalışıyor (görselleştirme modunda kontrol ettim). Demo hesap açtım ve periyodik olarak şu sorun çıkıyor, sipariş açılıp hemen siliniyor ve saat değişene kadar bir saat boyunca böyle devam ediyor. Aynı zamanda bir sipariş girme ve silme koşulunun oluştuğunu düşündüm, ancak burada silme yalnızca zamanla, bu bloğun tamamını sildiğimde hata kaybolmadı. Kimse için zor değilse, bana hatanın nerede olduğunu söyleyin.
Print(__FUNCTION__) ticaretini kontrol eden fonksiyonlarda veya Print(böyle ve-böyle bir blok, böyle-ve-bu parametreler) bloklarında belirtin. İşlevlerin/blokların hangi sırayla çalıştığını görün. İşe yarayan, ancak olmaması gereken ilk şey, o zaman onun için soru bu. "Burada eşzamanlı çalışması için oldukça uyumsuz koşulları tanımladım" gerçeğine güvenmek buna değmez. Belki bloğun çalışmaması gerekiyordu, ancak dış parametreler açılmasına izin verdi, belki de bloğun içindeki bir şey çalışmamalıydı.
OnChartEvent() , test cihazında çalışmıyor.
Lütfen test cihazında çalışabilecek bir düğme gösterin. Örneğin hangi bayrağın kaldırılacağına tıklayın ticaret = doğru; tekrar basın? takas=yanlış;
OnChartEvent(), test cihazında çalışmıyor.
Lütfen test cihazında çalışabilecek bir düğme gösterin. Örneğin hangi bayrağın kaldırılacağına tıklayın ticaret = doğru; tekrar basın? takas=yanlış;
OnTick()'te düğmenin tıklanmasını kontrol edin. OnTick() içindeki test edici - kontrol çalışıyorsa, koşullu olarak yapılabilir, ancak gerçek hayatta bu kontrolün bloğu yürütülmez ve OnChartEvent() içinde kontrol olur.