Toli kayaklar, çatı keçeleri veya başka bir şey gitmez. Sipariş başarılı bir şekilde verilirse bileti iade edilir mi? HistoryOrderSelect (bilet) işlevinin geri dönüşü sizin için bir şey ifade ediyor mu? Robotu başlatmanın dışında neden pahalı HS kullanıyorsunuz?
Bir OrderSend yapıyorsun. OrderSend'in bitiminden HEMEN sonra, belirli bir pozisyon bir alımla kapatılmadıysa, o zaman başka bir OrderSend yaparsınız. Programlanması gereken tüm mantık budur. Zaman uyumsuz kullanılmaz.
Şimdi robotumuz için olan durum. Bir OrderSend gönderdiniz ve yürütülürken limit limiti tetiklendi ve bundan sonra yukarıda bahsettiğimiz pozisyonumuzu alma tetiklendi.
Burada gerçekten hiçbir şey anlamadım - mümkünse lütfen adımları daha ayrıntılı olarak açıklayın. Anladığım tek şey, yalnızca OnTradeTransaction olay işleyicisinin kullanıldığı, bu da olay işleme öncelik kontrolünün gerekli olmadığı ve önerilen
Şimdi şemadaki ikincil olay işleyicisinin aşağıdaki gibi uygulanması önerilmektedir:
On2TradeTransaction(...)
{
if флаг установлен goto label
/*вычисления1*/
запомнить результаты вычислений
установить флаг
return ;
label: извлечь результаты вычислений
/*вычисления2*/
}
Burada gerçekten hiçbir şey anlamadım - mümkünse lütfen adımları daha ayrıntılı olarak açıklayın.
void OnMain()
{
OrderSend (OP_BULIMIT); // Во время выполнения сработал и другой отложенник и тейк позиции (после отложенника).// Следующий OrderSend должен быть незамедлительно вызван.if (наблюдаемая позиция закрылась по тейку) // Проблема определить это без доступа к очереди.OrderSend (OP_BUYLIMIT)
elseOrderSend (OP_SELLLIMIT)
}
OrderSend'i aradıktan sonra neden geri dönemiyorsunuz ?
void OnMain()
{
if (first)
{
OrderSend (OP_BULIMIT); // Во время выполнения сработал и другой отложенник и тейк позиции (после отложенника).return ;
}
//...
}
Kuyruğa (veya zamanlayıcıya göre) zaten yeni bir olay eklendiğinde OnMain'e bir sonraki döndüğünüzde
Bir sonraki olay, pozisyonun alınması değil, gecikmenin uygulanmasıdır.
Mevcut kuyruğun tamamını veya belirli sayıda olay okunana kadar tekrarlanan bir dönüş (dönüş) yapılması önerilir. Ticaret etkinlikleri sona erdiğinde, zamanlayıcıda bir geri dönüş olacak ve tüm etkinliklere aynı anda erişebileceksiniz.
void OnMain()
{
if (first)
{
OrderSend (OP_BULIMIT); // Во время выполнения сработал и другой отложенник и тейк позиции (после отложенника).return ;
}
if ( OnTrade событие последнее )
return ; //может еще есть
if ( OnTimer событие последнее )
{ // все торговые события в лукошкеif (наблюдаемая позиция закрылась по тейку) // Проблема определить это без доступа к очереди.OrderSend (OP_BUYLIMIT)
elseOrderSend (OP_SELLLIMIT)
}
}
OnTimer olmadan daha zarif bir çözüm de var...düşün
Savaş danışmanlarında, şüpheli yerlerde her yerde _B(FuncName(...), AlertTime) işlevleri giydim.
Çok pahalı olduğunu unutmuşum.
Tehdit Her tıklamada, en fazla, yalnızca HistorySelect nedeniyle toplam onlarca milisaniye harcıyorum.
Bir savaş danışmanının profilini çıkarmak.
Robotu başlatmanın dışında neden pahalı HS kullanıyorsunuz?
Konunun başında yayınlandı.
Bir OrderSend yapıyorsun. OrderSend'in bitiminden HEMEN sonra, belirli bir pozisyon bir alımla kapatılmadıysa, o zaman başka bir OrderSend yaparsınız. Programlanması gereken tüm mantık budur. Zaman uyumsuz kullanılmaz.
Şimdi robotumuz için olan durum. Bir OrderSend gönderdiniz ve yürütülürken limit limiti tetiklendi ve bundan sonra yukarıda bahsettiğimiz pozisyonumuzu alma tetiklendi.
Burada gerçekten hiçbir şey anlamadım - mümkünse lütfen adımları daha ayrıntılı olarak açıklayın. Anladığım tek şey, yalnızca OnTradeTransaction olay işleyicisinin kullanıldığı, bu da olay işleme öncelik kontrolünün gerekli olmadığı ve önerilen
bool HandleNextEvent(ENUM_EVENT_TYPE);dejenere olur
bool HandleNextEvent();On2TradeTransaction(...) { if флаг установлен goto label /*вычисления1*/ запомнить результаты вычислений установить флаг return ; label: извлечь результаты вычислений /*вычисления2*/ }Burada gerçekten hiçbir şey anlamadım - mümkünse lütfen adımları daha ayrıntılı olarak açıklayın.
OrderSend'i aradıktan sonra neden geri dönemiyorsunuz ?
Kuyruğa (veya zamanlayıcıya göre) zaten yeni bir olay eklendiğinde OnMain'e bir sonraki döndüğünüzde
A100 :
OrderSend'i aradıktan sonra neden geri dönemiyorsunuz ?
Bu konuda herhangi bir kısıtlama yoktur.
Kuyruğa (veya zamanlayıcıya göre) zaten yeni bir olay eklendiğinde OnMain'e bir sonraki döndüğünüzde
Bir sonraki olay, pozisyonun alınması değil, gecikmenin uygulanmasıdır.
Bir sonraki olay, pozisyonun alınması değil, gecikmenin uygulanmasıdır.
Mevcut kuyruğun tamamını veya belirli sayıda olay okunana kadar tekrarlanan bir dönüş (dönüş) yapılması önerilir. Ticaret etkinlikleri sona erdiğinde, zamanlayıcıda bir geri dönüş olacak ve tüm etkinliklere aynı anda erişebileceksiniz.