MisterD : Tekrar merhaba, lütfen aşağıdaki koddaki hatanın nerede olduğunu söyler misiniz? Şu anda döngüye "deinit" diyorum Sonuncusu hariç tüm siparişler silinir. Hatanın büyük olasılıkla bu satırda olduğunu anlıyorum >> for (int i=1; i<=OrdersTotal(); i++) << Ancak, mantıksal olarak, her şey doğru görünüyor ... neyi kaçırdım? Şimdiden teşekkürler!
Ters çevrim
//-------------------------------------------------------------------------------------------for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i,SELECT_BY_POS)== true )
{
int Type=OrderType();
if (OrderSymbol()!= Symbol () || Type < 2 ) continue ;
int Ticket=OrderTicket();
bool Modify =OrderDelete(Ticket);
if (Modify == true ) Alert ( "Ордер Удалён" ); continue ;
if (Modify != true ) Alert ( "Удаление ордера не удалась" );
}
}
//-------------------------------------------------------------------------------------------
MisterD : Tekrar merhaba, lütfen aşağıdaki koddaki hatanın nerede olduğunu söyler misiniz? Şu anda döngüye "deinit" diyorum Sonuncusu hariç tüm siparişler silinir. Hatanın büyük olasılıkla bu satırda olduğunu anlıyorum >> for (int i=1; i<=OrdersTotal(); i++) << Ancak, her şey mantıksal olarak doğru görünüyor ... neyi kaçırdım? Şimdiden teşekkürler!
İyi günler, danışmanın geliştirilmesinde bir sorun oluştu, koşullar gösterge tarafından kapatıldığını gösterse de siparişleri kapatmıyor, lütfen neyin yanlış olduğunu açıklayın, şimdiden teşekkürler
mesela ben .. evet ve son zamanlarda altına dikkat ettim .. düşündüğüm kadar hızlı tepki vermiyor
Henüz bu formdaki fonksiyonlarla çalışmadım .. bu yüzden destek istiyorum
İlk olarak, enstrüman için toplam pozisyonun BU satırını hesaplayın (bu, puan cinsinden kârlılığa ulaşıldığında siparişleri kapatma koşullarını belirlemek içindir):
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+//| Автор : TarasBY, taras_bulba@tut.by |//+-----------------------------------------------------------------------------------+//| Определение Уровня БезУбытка по символу |//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+double fGet_BreakEven ( string fs_Symbol, // Symboldouble fd_DeltaLots, // разность объемов ордеров Buy и Selldouble fd_Profit) // текущий профит по открытым ордера
{
if (fd_DeltaLots == 0 .) return ( 0 .);
double ld_BU = 0 ., ld_tickvalue = MarketInfo (fs_Symbol, MODE_TICKVALUE); // цена одного пункта//----//---- Уровень общего безубытка для открытых ордеровif (fd_DeltaLots > 0 .) ld_BU = MarketInfo (fs_Symbol, MODE_BID) - (fd_Profit / (ld_tickvalue * fd_DeltaLots)) * MarketInfo (fs_Symbol, MODE_POINT);
elseif (fd_DeltaLots < 0 .) ld_BU = MarketInfo (fs_Symbol, MODE_ASK) - (fd_Profit / (ld_tickvalue * fd_DeltaLots)) * MarketInfo (fs_Symbol, MODE_POINT);
//----return (ld_BU);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
Ardından cari fiyat ile Başabaş satırı arasındaki farkı hesaplayın, eğer "fark uygunsa" emir silme prosedürüne geçiyoruz. İlk olarak, en karlı / kaybeden siparişin Bileti için arama işlevi:
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+//| Автор : TarasBY, taras_bulba@tut.by |//+-----------------------------------------------------------------------------------+// Получаем Тикет самого прибыльного/убыточного ордера |//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+int fGet_TicketWithControlProfit ( string fs_Symbol = "" , // Инструментint fi_Magic = - 1 , // Magicint fi_Type = - 1 , // OrderTypeint fi_TypeProfit = 0 ) // Профитность ордера среди остальных ордеров:// >= 0 - с самым большим профитом;// < 0 - самый убыточный
{
double ld_Profit = 0 ., ld_curProfit;
int li_Total = OrdersTotal (), li_Ticket = - 1 ;
//----if (fs_Symbol == "" ) fs_Symbol = Symbol ();
if (fi_TypeProfit < 0 ) ld_Profit = 10000000000. ;
for ( int i = li_Total - 1 ; i >= 0 ; i--)
{
if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
if (OrderSymbol() != fs_Symbol) continue ;
if (fi_Magic > - 1 ) if (OrderMagicNumber() != fi_Magic) continue ;
if (fi_Type > - 1 ) if (OrderType() != fi_Type) continue ;
if (fi_Type > 1 ) continue ;
ld_curProfit = OrderProfit() + OrderSwap() + OrderCommission();
if (fi_TypeProfit >= 0 ) { if (ld_Profit <= ld_curProfit) continue ;}
elseif (ld_Profit >= ld_curProfit) continue ;
ld_Profit = ld_curProfit;
li_Ticket = OrderTicket();
}
//----return (li_Ticket);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
Kaldırma her iki yönde de düzenlenebilir. Silmek:
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+//| Автор : TarasBY, taras_bulba@tut.by |//+-----------------------------------------------------------------------------------+//| Функция закрытия "своих" ордеров по признаку |//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+int fClose_AllOrdersByProfit ( string fs_Symbol = "" , // Инструментint fi_Magic = - 1 , // Magicint fi_Type = - 1 , // OrderTypeint fi_TypeProfit = 0 ) // Направление закрытия ордеро по профитности:// >= 0 - начиная от самого большого профита;// < 0 - начиная от самого маленького профита;
{
int li_Ticket = fGet_TicketWithControlProfit (fs_Symbol, fi_Magic, fi_Type, fi_TypeProfit),
li_cnt = 0 ;
//----while (li_Ticket > 0 )
{
//---- Здесь вставите свою процедуру закрытия //---- что-то типа://ClosePosByTicket (li_Ticket);
li_Ticket = fGet_TicketWithControlProfit (fs_Symbol, fi_Magic, fi_Type, fi_TypeProfit);
li_cnt++;
}
//----return (li_cnt);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
Gerekli birimi daha fazla monte etmek zor değil: ustalaşmanız veya işe gitmeniz gerekiyor ... :)
Tekrar merhaba, lütfen aşağıdaki koddaki hatanın nerede olduğunu söyler misiniz?
Şu anda döngüye "deinit" diyorum
Sonuncusu hariç tüm siparişler silinir.
Hatanın büyük olasılıkla bu satırda olduğunu anlıyorum >> for (int i=1; i<=OrdersTotal(); i++) <<
Ancak, mantıksal olarak, her şey doğru görünüyor ... neyi kaçırdım?
Şimdiden teşekkürler!
Ters çevrim
Tekrar merhaba, lütfen aşağıdaki koddaki hatanın nerede olduğunu söyler misiniz?
Şu anda döngüye "deinit" diyorum
Sonuncusu hariç tüm siparişler silinir.
Hatanın büyük olasılıkla bu satırda olduğunu anlıyorum >> for (int i=1; i<=OrdersTotal(); i++) <<
Ancak, her şey mantıksal olarak doğru görünüyor ... neyi kaçırdım?
Şimdiden teşekkürler!
//------------------------------------------------ -------------------------------------------------
//------------------------------------------------ -------------------------------------------------
Şu şekilde deneyin:
tünaydın. Biraz yardıma ihtiyacım var, kar açısından en şişman partilerden birini kapatan bir fonksiyon var.
bu konuyu kapatman gerek
ve bana nasıl kullanılacağını söyleyin lütfen, örneğin, hesap öz sermayesi 5 puandan fazlaysa, işlev çalışmalıdır.
}
tünaydın. Biraz yardıma ihtiyacım var, kar açısından en şişman partilerden birini kapatan bir fonksiyon var.
bu konuyu kapatman gerek
ve bana nasıl kullanılacağını söyleyin lütfen, örneğin, hesap öz sermayesi 5 puandan fazlaysa, işlev çalışmalıdır.
5 puan (4 işaret için) - gerçek piyasada 3-4'ten fazla emir ile (silme sonuçlarına göre) kolayca eksiye dönüşecektir. :)))
PS Anladığım kadarıyla, hazır bir koda ihtiyacınız var, ancak böyle bir sorunu çözmek için algoritma sizin için işe yaramaz mı?!
5 puan (4 işaret için) - 3-4'ten fazla siparişin olduğu gerçek piyasada, (silme sonuçlarına göre) kolayca eksiye dönüşecektir. :)))
mesela ben .. evet ve son zamanlarda altına dikkat ettim .. düşündüğüm kadar hızlı tepki vermiyor
Henüz bu formdaki fonksiyonlarla çalışmadım .. bu yüzden destek istiyorum
mesela ben .. evet ve son zamanlarda altına dikkat ettim .. düşündüğüm kadar hızlı tepki vermiyor
Henüz bu formdaki fonksiyonlarla çalışmadım .. bu yüzden destek istiyorum
İlk olarak, enstrüman için toplam pozisyonun BU satırını hesaplayın (bu, puan cinsinden kârlılığa ulaşıldığında siparişleri kapatma koşullarını belirlemek içindir):
Ardından cari fiyat ile Başabaş satırı arasındaki farkı hesaplayın, eğer "fark uygunsa" emir silme prosedürüne geçiyoruz. İlk olarak, en karlı / kaybeden siparişin Bileti için arama işlevi:
Kaldırma her iki yönde de düzenlenebilir. Silmek:
Gerekli birimi daha fazla monte etmek zor değil: ustalaşmanız veya işe gitmeniz gerekiyor ... :)
ama nedense fiyat dört haneli olarak 1.3360 euro olarak çizilmiştir.
bir hata önerir misiniz?
Bir değişkene fiyat değeri atamak istiyorum.
ama nedense fiyat dört haneli olarak 1.3360 euro olarak çizilmiştir.
bir hata önerir misiniz?
Belki DC dört hanelidir? Veya DoubleToStr(YourPrice,5) olmadan fiyatı görüntüleyin
Belki DC dört hanelidir? Veya DoubleToStr(YourPrice,5) olmadan fiyatı görüntüleyin
DC beş haneli...
DoubleToStr(YourPrice,5) OLMADAN ne anlama geliyor? Hiçbir yerde DoubleToStr(YourPrice,5) yoktu