#include <Trade\Trade.mqh>
CTrade Trade;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart ()
{
//---int total= PositionsTotal ();
int Ordertotal= OrdersTotal ();
while (! IsStopped () && (total <= 1 )) // Закончим, когда появится более одной позиции.if (total == 1 )
Trade.PositionClose( PositionGetTicket ( 0 )); // Если есть позиция - закрываем.elseif (Ordertotal!= 0 )
Trade.Buy( 0.01 ); // Если нет позиции и ордера - открываем позицию.
}
//+------------------------------------------------------------------+
Çoğu broker aynı şekilde çalışır: Result.deal == 0.
Örneğin, Signals, scalping için en popüler komisyoncudur.
Tanınmış brokerler arasında MT5'in nerede farklı bir şekilde çalıştığını bulmak oldukça zordur.
Eh, ne tür bir kafa derisinin işe yarayacağını bilmiyorum, bu yüzden pozisyonu kapatmak için zamanım yok ...
Sakıncası yoksa, yine de pozisyon sayısı için bir kontrol eklemeyi deneyin.
elseif (! PositionsTotal () && ! OrdersTotal ())
Bence iki pozisyon açık ve kapalı. Bu iki pozisyonun türlerini elde etmeye çalışmaktan zarar gelmez. Zıt yönlerdelerse, bu şüphelerimi doğrulayacaktır ...
Peki, bu siparişin durumunu al, eğer bilet biliniyorsa.
Anlaşma başarısız oldu, kullanım fiyatı 0.
Ticaret talebi sonuç yapısı (MqlTradeResult)
İşlem sistemine bir emir vermek için bir işlem talebine yanıt olarak, işlem sunucusu, önceden tanımlanmış özel bir MqlTradeResult yapısı biçiminde bir işlem talebinin işlenmesinin sonucu hakkında bilgi içeren verileri döndürür.
structMqlTradeResult
{
uint retcode; // Код результата операцииulong deal; // Тикет сделки, если она совершенаulong order; // Тикет ордера, если он выставленdouble volume; // Объем сделки, подтверждённый брокеромdouble price; // Цена в сделке, подтверждённая брокеромdouble bid; // Текущая рыночная цена предложения (цены реквота)double ask; // Текущая рыночная цена спроса (цены реквота)string comment; // Комментарий брокера к операции (по умолчанию заполняется расшифровкой кода возврата торгового сервера)uint request_id; // Идентификатор запроса, устанавливается терминалом при отправке uint retcode_external; // Код ответа внешней торговой системы
};
Peki, bu siparişin durumunu al, eğer bilet biliniyorsa.
Anlaşma başarısız oldu, kullanım fiyatı 0.
Sadece mesele buydu, geçti. Komut dosyası yürütmesinin sona ermesinden sonra, bir veya iki konum asılı kalır (koda kaç baskı ekleneceğine bağlı olarak).
kod:
#define PRINT(A) Print ( #A + " = " + ( string )(A))
#include <Trade\Trade.mqh>
voidOnStart ()
{
CTrade Trade;
while (! IsStopped () && ( PositionsTotal () <= 1 )) // Закончим, когда появится более одной позиции.if ( PositionsTotal () == 1 )
{
Trade.PositionClose( PositionGetTicket ( 0 )); // Если есть позиция - закрываем.Print ( "Закрытие, т. к. PositionsTotal() равно 1" );
}
elseif (! OrdersTotal ())
{
printf ( "Перед открытием. PositionsTotal: %d, OrdersTotal: %d" , PositionsTotal (), OrdersTotal ());
Trade.Buy( 0.01 ); // Если нет позиции и ордера - открываем позицию.
PRINT(Trade.ResultRetcodeDescription());
PRINT(Trade.ResultDeal());
PRINT(Trade.ResultOrder());
PRINT(Trade.ResultComment());
if ( OrderSelect (Trade.ResultOrder()))
PRINT( OrderGetInteger ( ORDER_STATE ));
printf ( "После открытия. PositionsTotal: %d, OrdersTotal: %d" , PositionsTotal (), OrdersTotal ());
}
Print ( "Выход. PostionsTotal: " , PositionsTotal ());
}
Sonuç:
2021.05 . 0514 : 25 : 14.738 Test (EURUSD,M1) Перед открытием. PositionsTotal : 0 , OrdersTotal : 02021.05 . 0514 : 25 : 14.821 Test (EURUSD,M1) Trade.ResultRetcodeDescription() = done at 0.000002021.05 . 0514 : 25 : 14.821 Test (EURUSD,M1) Trade.ResultDeal() = 02021.05 . 0514 : 25 : 14.821 Test (EURUSD,M1) Trade.ResultOrder() = 22498886812021.05 . 0514 : 25 : 14.821 Test (EURUSD,M1) Trade.ResultComment() = Request executed
2021.05 . 0514 : 25 : 14.821 Test (EURUSD,M1) EnumToString ( ENUM_ORDER_STATE ( OrderGetInteger ( ORDER_STATE ))) = ORDER_STATE_PLACED2021.05 . 0514 : 25 : 14.821 Test (EURUSD,M1) После открытия. PositionsTotal : 1 , OrdersTotal : 12021.05 . 0514 : 25 : 14.899 Test (EURUSD,M1) Закрытие, т. к. PositionsTotal () равно 12021.05 . 0514 : 25 : 14.899 Test (EURUSD,M1) Выход. PostionsTotal: 2
Eh, ne tür bir kafa derisinin işe yarayacağını bilmiyorum, bu yüzden pozisyonu kapatmak için zamanım yok ...
Her şey orada çalışıyor. Sadece MT5'in mimari bir özelliği.
Sakıncası yoksa, yine de pozisyon sayısı için bir kontrol eklemeyi deneyin.
Bu kontrol kaynak kodunda mevcuttur.
Bence iki pozisyon açık ve kapalı . Bu iki pozisyonun türlerini elde etmeye çalışmaktan zarar gelmez. Zıt yönlerdelerse, bu şüphelerimi doğrulayacaktır ...
çok iyi çıkıyor - (hangi amaçlara bağlı olarak!?)
çok iyi çıkıyor - (hangi amaçlara bağlı olarak!?)
buluşmayın. MT hatalarını yakalamak için her türlü entrikayı oluşturan özel bir DC'leri var.
MT hatalarını yakalamak için her türlü entrikayı oluşturan özel bir DC.
Çoğu broker aynı şekilde çalışır: Result.deal == 0.
Örneğin, Signals, scalping için en popüler komisyoncudur.
Tanınmış brokerler arasında MT5'in nerede farklı bir şekilde çalıştığını bulmak oldukça zordur.
çok iyi çıkıyor - (hangi amaçlara bağlı olarak!?)
Çoğu broker aynı şekilde çalışır: Result.deal == 0.
Örneğin, Signals, scalping için en popüler komisyoncudur.
Tanınmış brokerler arasında MT5'in nerede farklı bir şekilde çalıştığını bulmak oldukça zordur.
Eh, ne tür bir kafa derisinin işe yarayacağını bilmiyorum, bu yüzden pozisyonu kapatmak için zamanım yok ...
Sakıncası yoksa, yine de pozisyon sayısı için bir kontrol eklemeyi deneyin.
Bence iki pozisyon açık ve kapalı. Bu iki pozisyonun türlerini elde etmeye çalışmaktan zarar gelmez. Zıt yönlerdelerse, bu şüphelerimi doğrulayacaktır ...
Yapılmış:
Sonuç:
Peki, bu siparişin durumunu al, eğer bilet biliniyorsa.
Anlaşma başarısız oldu, kullanım fiyatı 0.
Ticaret talebi sonuç yapısı (MqlTradeResult)
İşlem sistemine bir emir vermek için bir işlem talebine yanıt olarak, işlem sunucusu, önceden tanımlanmış özel bir MqlTradeResult yapısı biçiminde bir işlem talebinin işlenmesinin sonucu hakkında bilgi içeren verileri döndürür.
Peki, bu siparişin durumunu al, eğer bilet biliniyorsa.
Anlaşma başarısız oldu, kullanım fiyatı 0.
Sadece mesele buydu, geçti. Komut dosyası yürütmesinin sona ermesinden sonra, bir veya iki konum asılı kalır (koda kaç baskı ekleneceğine bağlı olarak).
kod:
Sonuç:
Eh, ne tür bir kafa derisinin işe yarayacağını bilmiyorum, bu yüzden pozisyonu kapatmak için zamanım yok ...
Her şey orada çalışıyor. Sadece MT5'in mimari bir özelliği.
Sakıncası yoksa, yine de pozisyon sayısı için bir kontrol eklemeyi deneyin.
Bu kontrol kaynak kodunda mevcuttur.
Bence iki pozisyon açık ve kapalı . Bu iki pozisyonun türlerini elde etmeye çalışmaktan zarar gelmez. Zıt yönlerdelerse, bu şüphelerimi doğrulayacaktır ...
Kapanış pozisyonu yok.
Eller henüz uzanmadı. gün içinde yayınlayacağım.
İşe yaramadı, problemler buldum.
İşe yaramadı, problemler buldum.
Dört gözle beklemek. Herhangi bir yardıma ihtiyacınız olursa lütfen yazın.