Tünaydın. Lütfen acemi bir tüccarın , keyfi kar alma yeteneği ile döviz çiftlerinde kilit emirleri açabilen uygun bir otomatik ticaret EA bulmasına yardımcı olun. Teşekkür ederim.
abcxyzabcxyz : Tünaydın. Lütfen acemi bir tüccarın, keyfi kar alma yeteneği ile döviz çiftlerinde kilit emirleri açabilen uygun bir otomatik ticaret EA bulmasına yardımcı olun. Teşekkür ederim.
Gerçekten kilitlemeye ihtiyacınız varsa - o zaman buradasınız . MetaTrader 5 platformu ağ oluşturduğu için MetaTrader 5'te kilitleme yoktur.
#include<Ticaret\Ticaret.mqh> //+------------------------------------------- --------------------+ //| | //+------------------------------------------- ------ ----------------------+ geçersizAçılışta() { //--- CTrade ticareti; çiftd_değeri=M_PI; inti_value=INT_MAX; Yazdır("d_value: type=",GetTypeName(d_value),", value=", d_value); Print("i_value: type=",GetTypeName(i_value),", value=", i_value); Print("ticaret: type=",GetTypeName(ticaret)); //--- } //+------------------------------------------- --------------------+ //| Türü bir dize olarak döndürür | //+------------------------------------------- --------------------+ şablon<typenameT> stringGetTypeName(constT&t) { //--- türü bir dizge olarak döndür dönüş(typename(T)); //--- }
İçinde! Bir şeyim var! Ama yeni ile çalışmıyor - kodda neye ihtiyacım olduğuna dair bir örnek var - biri bana hangi yöntemleri söyleyebilir?
class a{
public :
virtualvoidPrint (){ Print ( "Print class a" );}
};
class b: public a{
public :
virtualvoidPrint (){ Print ( "Print class b" );}
};
class c: public a{
public :
virtualvoidPrint (){ Print ( "Print class c" );}
void Print2(){ Print ( "!Print2! class c" );}
};
void add(a *&arr[], bool var)
{
ArrayResize (arr, ArraySize (arr)+ 1 );
if (var)
arr[ ArraySize (arr)- 1 ] = new b;
else
arr[ ArraySize (arr)- 1 ] = new c;
}
voidOnStart ()
{
//---
a *arr[];
add(arr, true ); // На самом деле здесь я НЕ знаю, какой класс добавит функция add
add(arr, false ); // Это потомок класса а или сам класс а, исходный код которого я править не могу.for ( int i = 0 ; i < ArraySize (arr); i++)
{
// Вот тут то мне и надо узнать, что за класс там// шаблон вернет *а, как и объявлено. Но мне надо проверить - можно ли вызвать функцию, которая есть только в сif (i == 1 ) // Вот тут должна быть проверка на имя класса
{
c *tmp = arr[i];
tmp.Print2();
}
}
//---
}
Birisi bana yukarıdaki kodun neden gerçek zamanlı olarak çalıştığı halde test cihazında çalışmadığını açıklayabilir mi !!? HistoryOrderGetInteger... özelliklerinin neden HistorySelect(0, TimeCurrent()) 'dan sonra test cihazında mevcut olmadığıyla özellikle ilgileniyorum.
ps İlginç bir şekilde, test cihazındaki ilk sipariş doğru bir şekilde işlenirken geri kalanı değil. Ve yine de, HistroryOrderSelect(ticketOrder) yorumunu kaldırırsanız, o zaman gerçek zamanlı olarak siparişin seçilmediğine dair bir mesaj görünür ve strateji test cihazında tam tersine, ilk sipariş dışında her şey çalışmaya başlar.
Ve HistorySelect() ile ilgili bir sorunum var. Piyasa emri göndererek script ile pozisyon açıyorum ve eğer bir fırsat açılırsa script lansmanından bu yana tarihteki işlem sayısına hemen bakıyorum ve saniyede 10 kez aralıklarla kontrol ediyorum. Elbette tek bir anlaşma olmalı. İşte komut dosyası:
voidOnStart ()
{
// время запуска скриптаdatetime dtStartTime = TimeCurrent ();
// структуры запросаMqlTradeRequest oRequest = { 0 };
MqlTradeResult oResult = { 0 };
// формируем запрос
oRequest.action = TRADE_ACTION_DEAL ;
oRequest.magic = 15 ;
oRequest.symbol = _Symbol ;
oRequest.volume = 0.1 ;
oRequest.type = ORDER_TYPE_BUY ;
oRequest.type_filling = ORDER_FILLING_FOK ;
oRequest.price = SymbolInfoDouble ( _Symbol , SYMBOL_ASK );
oRequest.deviation = 1000 ;
// шлём ордерbool bResult = OrderSend (oRequest, oResult);
// если позиция успешно открытаif (bResult == true && oResult.retcode == 10009 ) // если позиция открыта
{
for ( int i = 0 ; i < 10 ; i++)
{
// запрашиваем историю за время работы скриптаHistorySelect (dtStartTime, TimeCurrent ());
// количество сделок за время работы скрипта (должна быть одна)Print ( "Шаг: " , i, " Совершено сделок: " , HistoryDealsTotal ());
Sleep ( 1000 );
}
}
}
Ve işte Alpha Forex'teki sonuç:
Anlaşma aslında yapıldı ve 10 saniye sonra bile tarihte değil. Bu ne? Hata MT'si? Hata Alfa? Bilmediğim bir özellik mi? Alpari için, aynı komut dosyası iyi çalışıyor, yalnızca ilk (sıfır) adımda sıfır atlamalar (peki, bu anlaşılabilir - tarih henüz güncellenmedi), diğer tüm adımlar bir. Ama on saniye sonra, tarihte neden anlaşma yok?
Ve HistorySelect() ile ilgili bir sorunum var. Piyasa emri göndererek script ile pozisyon açıyorum ve eğer bir fırsat açılırsa script lansmanından bu yana tarihteki işlem sayısına hemen bakıyorum ve saniyede 10 kez aralıklarla kontrol ediyorum. Elbette tek bir anlaşma olmalı. İşte komut dosyası:
Ve işte Alfa Broker'ın sonucu:
Anlaşma aslında yapıldı ve 10 saniye sonra bile tarihte değil. Bu ne? Hata MT'si? Hata Alfa? Bilmediğim bir özellik mi? Alpari için, aynı komut dosyası iyi çalışıyor, yalnızca ilk (sıfır) adımda sıfır atlamalar (peki, bu anlaşılabilir - tarih henüz güncellenmedi), diğer tüm adımlar bir. Ama on saniye sonra, tarihte neden anlaşma yok?
suşlar dize
tarihsaat dtStartTime = TimeCurrent();
dtStartTime ve TimeCurrent() zamanına göre aynı sayı olmadığından emin misiniz? Belki bir saniyelik yuvarlama, tamamlanmış bir ticareti dtStartTime'ın dışına çıkarır.
dtStartTime ve TimeCurrent() zamanına göre aynı sayı olmadığından emin misiniz? Belki bir saniyelik yuvarlama, tamamlanmış bir ticareti dtStartTime'ın dışına çıkarır.
Ve bir şey olsa bile, MT'nin bu saniyede tarih vermesi gerekmez mi? Onlar. sınırları kendisi de dahil olmak üzere belirlenen sınırlar içinde hikayeyi vermiyor mu?
Ama yine de, hem dtStartTime = TimeCurrent() - 1 hem de dtStartTime = TimeCurrent() - 10 yazmayı denedim. Faydası olmuyor.
Tünaydın. Lütfen acemi bir tüccarın, keyfi kar alma yeteneği ile döviz çiftlerinde kilit emirleri açabilen uygun bir otomatik ticaret EA bulmasına yardımcı olun. Teşekkür ederim.
Bir seçenek olarak: hepsinde, tür tanımlayıcısını döndürdüğünüz Type yöntemini bildirin.
Heh, kaynak kodu düzenlemek mümkün olsaydı... Her şeyi bu kadar basitleştirmeye gerek yok. Ama yine de - mql5'te bir sınıf adı var mı???
Heh, kaynak kodu düzenlemek mümkün olsaydı... Her şeyi bu kadar basitleştirmeye gerek yok. Ama yine de - mql5'te bir sınıf adı var mı???
Şablonlara doğru bakın. Bu kod, bir sınıfın veya ilkel türün adını döndürür.
#include <Ticaret\Ticaret.mqh>
//+------------------------------------------- ------ ----------------------+
//| |
//+------------------------------------------- --------------------+
geçersiz Açılışta ()
{
//---
CTrade ticareti;
çift d_değeri=M_PI;
int i_value=INT_MAX;
Yazdır ( "d_value: type=" ,GetTypeName(d_value), ", value=" , d_value);
Print ( "i_value: type=" ,GetTypeName(i_value), ", value=" , i_value);
Print ( "ticaret: type=" ,GetTypeName(ticaret));
//---
}
//+------------------------------------------- --------------------+
//| Türü bir dize olarak döndürür |
//+------------------------------------------- ------ ----------------------+
şablon < typename T>
string GetTypeName( const T & t)
{
//--- türü bir dizge olarak döndür
dönüş ( typename (T));
//---
}
Şablonlara doğru bakın. Bu kod, bir sınıfın veya ilkel türün adını döndürür.
#include <Ticaret\Ticaret.mqh>
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- ------ ----------------------+
geçersiz Açılışta ()
{
//---
CTrade ticareti;
çift d_değeri=M_PI;
int i_value=INT_MAX;
Yazdır ( "d_value: type=" ,GetTypeName(d_value), ", value=" , d_value);
Print ( "i_value: type=" ,GetTypeName(i_value), ", value=" , i_value);
Print ( "ticaret: type=" ,GetTypeName(ticaret));
//---
}
//+------------------------------------------- --------------------+
//| Türü bir dize olarak döndürür |
//+------------------------------------------- --------------------+
şablon < typename T>
string GetTypeName( const T & t)
{
//--- türü bir dizge olarak döndür
dönüş ( typename (T));
//---
}
İçinde! Bir şeyim var! Ama yeni ile çalışmıyor - kodda neye ihtiyacım olduğuna dair bir örnek var - biri bana hangi yöntemleri söyleyebilir?
İçinde! Bir şeyim var! Ama yeni ile çalışmıyor - kodda neye ihtiyacım olduğuna dair bir örnek var - biri bana hangi yöntemleri söyleyebilir?
Birisi bana yukarıdaki kodun neden gerçek zamanlı olarak çalıştığı halde test cihazında çalışmadığını açıklayabilir mi !!? HistoryOrderGetInteger... özelliklerinin neden HistorySelect(0, TimeCurrent()) 'dan sonra test cihazında mevcut olmadığıyla özellikle ilgileniyorum.
Strateji test cihazında ekran görüntüsü:
Demoda gerçek zamanlı ekran görüntüsü:
ps İlginç bir şekilde, test cihazındaki ilk sipariş doğru bir şekilde işlenirken geri kalanı değil. Ve yine de, HistroryOrderSelect(ticketOrder) yorumunu kaldırırsanız, o zaman gerçek zamanlı olarak siparişin seçilmediğine dair bir mesaj görünür ve strateji test cihazında tam tersine, ilk sipariş dışında her şey çalışmaya başlar.
Ve HistorySelect() ile ilgili bir sorunum var. Piyasa emri göndererek script ile pozisyon açıyorum ve eğer bir fırsat açılırsa script lansmanından bu yana tarihteki işlem sayısına hemen bakıyorum ve saniyede 10 kez aralıklarla kontrol ediyorum. Elbette tek bir anlaşma olmalı. İşte komut dosyası:
Ve işte Alpha Forex'teki sonuç:
Anlaşma aslında yapıldı ve 10 saniye sonra bile tarihte değil. Bu ne? Hata MT'si? Hata Alfa? Bilmediğim bir özellik mi? Alpari için, aynı komut dosyası iyi çalışıyor, yalnızca ilk (sıfır) adımda sıfır atlamalar (peki, bu anlaşılabilir - tarih henüz güncellenmedi), diğer tüm adımlar bir. Ama on saniye sonra, tarihte neden anlaşma yok?
Ve HistorySelect() ile ilgili bir sorunum var. Piyasa emri göndererek script ile pozisyon açıyorum ve eğer bir fırsat açılırsa script lansmanından bu yana tarihteki işlem sayısına hemen bakıyorum ve saniyede 10 kez aralıklarla kontrol ediyorum. Elbette tek bir anlaşma olmalı. İşte komut dosyası:
Ve işte Alfa Broker'ın sonucu:
Anlaşma aslında yapıldı ve 10 saniye sonra bile tarihte değil. Bu ne? Hata MT'si? Hata Alfa? Bilmediğim bir özellik mi? Alpari için, aynı komut dosyası iyi çalışıyor, yalnızca ilk (sıfır) adımda sıfır atlamalar (peki, bu anlaşılabilir - tarih henüz güncellenmedi), diğer tüm adımlar bir. Ama on saniye sonra, tarihte neden anlaşma yok?
suşlar dize
tarihsaat dtStartTime = TimeCurrent();
dtStartTime ve TimeCurrent() zamanına göre aynı sayı olmadığından emin misiniz? Belki bir saniyelik yuvarlama, tamamlanmış bir ticareti dtStartTime'ın dışına çıkarır.
suşlar dize
tarihsaat dtStartTime = TimeCurrent();
dtStartTime ve TimeCurrent() zamanına göre aynı sayı olmadığından emin misiniz? Belki bir saniyelik yuvarlama, tamamlanmış bir ticareti dtStartTime'ın dışına çıkarır.
Ve bir şey olsa bile, MT'nin bu saniyede tarih vermesi gerekmez mi? Onlar. sınırları kendisi de dahil olmak üzere belirlenen sınırlar içinde hikayeyi vermiyor mu?
Ama yine de, hem dtStartTime = TimeCurrent() - 1 hem de dtStartTime = TimeCurrent() - 10 yazmayı denedim. Faydası olmuyor.