Cevabınız için teşekkürler Sergey! Cevabınız beni daha da şaşırttı. Nasıl yani? Komut dosyası başlatıldığında, bekleyen tüm siparişler yoklanır. Resimden, grafikte iki tane olduğu ve aynı zamanda bir biletin seçildiği ve diğerinin seçilmediği görülebilir. Pek net değil.
Biraz daha açıklayabilir misin?
Soruyu boş bir meraktan değil, kendi kendine eğitime devam etmek için soruyorum.
Saygılarımla, Vladimir.
Burada, yineleyici i'yi maksimum dizinden 0'a değiştirdiğiniz bir döngü var. İçeride ne oluyor? Ve olay şu: İlk komutla ORDER_SYMBOL parametresini almaya çalışıyorsunuz. Ama hangi sırayla almaya çalışıyorsun?, çünkü sipariş aşağıdaki üç satır seçilecek!
Sergey Gridnev # : Burada, yineleyici i'yi maksimum dizinden 0'a değiştirdiğiniz bir döngü var. İçeride ne oluyor? Ve olay şu: İlk komutla ORDER_SYMBOL parametresini almaya çalışıyorsunuz. Ama hangi sırayla almaya çalışıyorsun?, çünkü sipariş aşağıdaki üç satır seçilecek!
Çok ayrıntılı ve anlaşılır bir açıklama için teşekkürler Sergey! Döngünün başlamasından hemen sonra bekleyen bir sipariş bileti ile bir satır koydum ve her şey yolunda gitti.
Evet-ah-ah ... Dikkat ve bir kez daha dikkat. Ben de tam olarak bunu özlüyorum. Tekrar teşekkürler!
Bugün benim için anlaşılmaz olan, ancak zaten tamamen MQL5 referansından alınan kodda bulunan iki an ile daha karşılaştım. Bu sefer hiçbir şey yazmadı, sadece hazır bir örnek aldı.
Modify Pending Order
Торговый приказ на модификацию уровней цен отложенного ордера. Требуется указание 7 полей:
action
order
price
sl
tp
type_time
expiration
Пример торговой операции TRADE_ACTION_MODIFY для модификации уровней цен отложенного ордера:
Bu temiz. Ve sonra aşağıdaki kodla bir örnek var:
#define EXPERT_MAGIC 123456// MagicNumber эксперта//+------------------------------------------------------------------+//| Модификация отложенных ордеров |//+------------------------------------------------------------------+voidOnStart ()
{
//-- объявление и инициализация запроса и результатаMqlTradeRequest request={};
MqlTradeResult result={};
int total= OrdersTotal (); // количество установленных отложенных ордеров//--- перебор всех установленных отложенных ордеровfor ( int i= 0 ; i<total; i++)
{
//--- параметры ордераulong order_ticket= OrderGetTicket (i); // тикет ордераstring order_symbol= Symbol (); // символint digits=( int ) SymbolInfoInteger (order_symbol, SYMBOL_DIGITS ); // количество знаков после запятойulong magic= OrderGetInteger ( ORDER_MAGIC ); // MagicNumber ордераdouble volume= OrderGetDouble ( ORDER_VOLUME_CURRENT ); // текущий объем ордераdouble sl= OrderGetDouble ( ORDER_SL ); // текущий Stop Loss ордераdouble tp= OrderGetDouble ( ORDER_TP ); // текущий Take Profit ордераENUM_ORDER_TYPE type=( ENUM_ORDER_TYPE ) OrderGetInteger ( ORDER_TYPE ); // тип ордераint offset = 50 ; // отступ от текущей цены для установки ордера, в пунктахdouble price; // цена срабатывания ордераdouble point= SymbolInfoDouble (order_symbol, SYMBOL_POINT ); // размер пункта//--- вывод информации об ордереPrintFormat ( "#%I64u %s %s %.2f %s sl: %s tp: %s [%I64d]" ,
order_ticket,
order_symbol,
EnumToString (type),
volume,
DoubleToString ( PositionGetDouble ( POSITION_PRICE_OPEN ),digits),DoubleToString (sl,digits),
DoubleToString (tp,digits),
magic);
//--- если MagicNumber совпадает, Stop Loss и Take Profit не заданыif (magic==EXPERT_MAGIC && sl== 0 && tp== 0 )
{
request.action= TRADE_ACTION_MODIFY ; // тип торговой операции
request.order = OrderGetTicket (i); // тикет ордера
request.symbol = Symbol (); // символ
request.deviation= 5 ; // допустимое отклонение от цены//--- установка уровня цены, тейк-профит и стоп-лосс ордера в зависимости от его типаif (type== ORDER_TYPE_BUY_LIMIT )
{
price = SymbolInfoDouble ( Symbol (), SYMBOL_ASK )-offset*point;
request.tp = NormalizeDouble (price+offset*point,digits);
request.sl = NormalizeDouble (price-offset*point,digits);
request.price = NormalizeDouble (price,digits); // нормализованная цена открытия
}
elseif (type== ORDER_TYPE_SELL_LIMIT )
{
price = SymbolInfoDouble ( Symbol (), SYMBOL_BID )+offset*point;
request.tp = NormalizeDouble (price-offset*point,digits);
request.sl = NormalizeDouble (price+offset*point,digits);
request.price = NormalizeDouble (price,digits); // нормализованная цена открытия
}
elseif (type== ORDER_TYPE_BUY_STOP )
{
price = SymbolInfoDouble ( Symbol (), SYMBOL_ASK )+offset*point;
request.tp = NormalizeDouble (price+offset*point,digits);
request.sl = NormalizeDouble (price-offset*point,digits);
request.price = NormalizeDouble (price,digits); // нормализованная цена открытия
}
elseif (type== ORDER_TYPE_SELL_STOP )
{
price = SymbolInfoDouble ( Symbol (), SYMBOL_BID )-offset*point;
request.tp = NormalizeDouble (price-offset*point,digits);
request.sl = NormalizeDouble (price+offset*point,digits);
request.price = NormalizeDouble (price,digits); // нормализованная цена открытия
}
//--- отправка запросаif (! OrderSend (request,result))
PrintFormat ( "OrderSend error %d" , GetLastError ()); // если отправить запрос не удалось, вывести код ошибки//--- информация об операции PrintFormat ( "retcode=%u deal=%I64u order=%I64u" ,result.retcode,result.deal,result.order);
//--- обнуление значений запроса и результатаZeroMemory (request);
ZeroMemory (result);
}
}
}
//+------------------------------------------------------------------+
Sarı ile vurgulanan satırı anlamaya çalışıyorum. Soru hemen ortaya çıktı - Örnek bekleyen siparişlerle ilgiliyse ,PositionGetDouble'ın(POSITION_PRICE_OPEN ) bununla ne ilgisi var? Belki de şöyle bir satır olmalı:
Bu ilk an. İkinci an, bu betiği benim tarafımdan belirlenen bir BUY_STOP bekleyen emri olan bir grafikte çalıştırmayı denediğimde geldi (aynı şey diğer bekleyen emir türlerinde de olmasına rağmen). Ve ne olur? Ama hiçbir şey olmadı! Bekleyen siparişte herhangi bir değişiklik görmüyorum. Belki bir şey anlamıyorum?
Sasha, belgelerden veya kuzu örneklerinden örnekler kullanmaktan daha kötübir şey düşünemezsiniz . Ayrıca, bir yerde while döngüsünün zorla sonlandırılması için bayrağı kaybettim. Genel olarak ... kelime yok.
Dokümantasyonda ve hatta standart kütüphanede yazılan örneklerin dikkatlice kontrol edildiğinden şüpheliyim. Bu tür birçok hata var. Örnekler bence sadece örnek olarak kullanılabilir...
Dokümantasyonda ve hatta standart kütüphanede yazılan örneklerin dikkatlice kontrol edildiğinden şüpheliyim. Bu tür birçok hata var. Örnekler bence sadece örnek olarak kullanılabilir...
Merhaba Alexey!
Bu kadar ciddi bir firmanın dizine karşı bu kadar ciddiyetsiz bir tavır sergilemesi çok üzücü.
Bu kadar ciddi bir firmanın dizine karşı bu kadar ciddiyetsiz bir tavır sergilemesi çok üzücü.
Saygılarımla, Vladimir.
Bu örnekte başka bir hata var. Ya da tamamen kör...
Listelenen zorunlu alanlar arasında süre sonu var, ancak örnek kodda süre sonu atanan yeri göremiyorum. Bunun yerine, fiyattan izin verilen bir sapma atanır.
Bu örnekte başka bir hata var. Ya da tamamen kör...
Listelenen zorunlu alanlar arasında süre sonu var, ancak örnek kodda süre sonu atanan yeri göremiyorum. Bunun yerine, fiyattan izin verilen bir sapma atanır.
Ayrıca, sona erme süresine (son kullanma süresi) ek olarak şunlar da olmalıdır:
Типы торговых операций - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Cevabınız için teşekkürler Sergey! Cevabınız beni daha da şaşırttı. Nasıl yani? Komut dosyası başlatıldığında, bekleyen tüm siparişler yoklanır. Resimden, grafikte iki tane olduğu ve aynı zamanda bir biletin seçildiği ve diğerinin seçilmediği görülebilir. Pek net değil.
Biraz daha açıklayabilir misin?
Soruyu boş bir meraktan değil, kendi kendine eğitime devam etmek için soruyorum.
Saygılarımla, Vladimir.
Burada, yineleyici i'yi maksimum dizinden 0'a değiştirdiğiniz bir döngü var. İçeride ne oluyor? Ve olay şu: İlk komutla ORDER_SYMBOL parametresini almaya çalışıyorsunuz. Ama hangi sırayla almaya çalışıyorsun?, çünkü sipariş aşağıdaki üç satır seçilecek!
Çok ayrıntılı ve anlaşılır bir açıklama için teşekkürler Sergey! Döngünün başlamasından hemen sonra bekleyen bir sipariş bileti ile bir satır koydum ve her şey yolunda gitti.
Evet-ah-ah ... Dikkat ve bir kez daha dikkat. Ben de tam olarak bunu özlüyorum. Tekrar teşekkürler!
Saygılarımla, Vladimir.
Günaydın sevgili uzmanlar!
Bugün benim için anlaşılmaz olan, ancak zaten tamamen MQL5 referansından alınan kodda bulunan iki an ile daha karşılaştım. Bu sefer hiçbir şey yazmadı, sadece hazır bir örnek aldı.
MQL5 Referans / Sabitler, Numaralandırmalar ve Yapılar / Veri Yapıları / Ticaret Talep Yapısını açıyorum. Orada buldum:
Ticaret talebi yapısıBu temiz. Ve sonra aşağıdaki kodla bir örnek var:
Sarı ile vurgulanan satırı anlamaya çalışıyorum. Soru hemen ortaya çıktı - Örnek bekleyen siparişlerle ilgiliyse , PositionGetDouble'ın ( POSITION_PRICE_OPEN ) bununla ne ilgisi var? Belki de şöyle bir satır olmalı:
Uzmanlar sekmesinde yalnızca şunu buluyorum:Sevgili uzmanlar, lütfen bu örneği anlamama yardım edin, neden dizinde var, ancak kodu çalışmıyor?
Saygılarımla, Vladimir.
Sevgili uzmanlar, lütfen bu örneği anlamama yardım edin, neden dizinde var, ancak kodu çalışmıyor?
Saygılarımla, Vladimir.
Birkaç sayfa önce bunun hakkında zaten yazdım
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma
Alexey Viktorov , 2022.02.20 10:24
Sasha, belgelerden veya kuzu örneklerinden örnekler kullanmaktan daha kötü bir şey düşünemezsiniz . Ayrıca, bir yerde while döngüsünün zorla sonlandırılması için bayrağı kaybettim. Genel olarak ... kelime yok.Birkaç sayfa önce bunun hakkında zaten yazdım
Merhaba Alexey!
Bu kadar ciddi bir firmanın dizine karşı bu kadar ciddiyetsiz bir tavır sergilemesi çok üzücü.
Saygılarımla, Vladimir.
Merhaba Alexey!
Bu kadar ciddi bir firmanın dizine karşı bu kadar ciddiyetsiz bir tavır sergilemesi çok üzücü.
Saygılarımla, Vladimir.
Bu örnekte başka bir hata var. Ya da tamamen kör...
Listelenen zorunlu alanlar arasında süre sonu var, ancak örnek kodda süre sonu atanan yeri göremiyorum. Bunun yerine, fiyattan izin verilen bir sapma atanır.
Bu örnekte başka bir hata var. Ya da tamamen kör...
Listelenen zorunlu alanlar arasında süre sonu var, ancak örnek kodda süre sonu atanan yeri göremiyorum. Bunun yerine, fiyattan izin verilen bir sapma atanır.
Ayrıca, sona erme süresine (son kullanma süresi) ek olarak şunlar da olmalıdır:
Saygılarımla, Vladimir.
Ayrıca, sona erme süresine (son kullanma süresi) ek olarak şunlar da olmalıdır:
Saygılarımla, Vladimir.
Moderatöre ve aynı zamanda bu başlığın düzenleyicisine, Artyom Trishkin'e sesleniyorum!
MQL5 referansıyla ilgili tüm soruları MQL'ye gönderme olanağınız var mı?
Zor değilse, en azından bu sayfa güncellenebilir mi?
Saygılarımla, Vladimir.Moderatöre ve aynı zamanda bu başlığın düzenleyicisine, Artyom Trishkin'e sesleniyorum!
MQL5 referansıyla ilgili tüm soruları MQL'ye gönderme olanağınız var mı?
Zor değilse, en azından bu sayfa güncellenebilir mi?
Saygılarımla, Vladimir.Bu konu altında da şikayet edebilirsiniz.
Bu konu altında da şikayet edebilirsiniz.
Bahşiş için teşekkürler, Alex! Öncelikle bu başlıkta cevap bekleyeceğim ama sessizlik olursa o zaman Hatalar, buglar, sorular konusuna döneceğim.
Saygılarımla, Vladimir.