[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 229

 
nikkola >> :

Derleme yapmadım, bu formda aldım ...

Kesinlikle hiçbir şeyi değiştirmez.

 
garip, bir anda kayboldu, ama yine de TheXpert sayesinde, hatanın ne olduğunu anlayacağım
 
nikkola >> :

Derleme yapmadım, bu formda aldım ...

Ve genel olarak, bu tür uzmanlar toplu olarak ve açık kaynakla bu kaynakta bile bulunmaktadır. Bir çeşit süzülmüş EA'ydı, fiyat ve arabanın kesiştiği yerde çalıştı. Nokta yerine başka bir gösterge koydum, hepsi bu. Ve bir sorunla karşılaştım.

 
ve bir soru daha, arşivlenmiş biçimde alıntılar olup olmadığını bilen var mı, yoksa internetim kauçuk değil, biter ^_^
 
nikkola >> :

Merhaba yardım plz anlayamadım... Osilatör sinyalleri üzerinde çalışan, sıfırı geçtikten sonra pozisyon açan bir danışman var. Mevcut bar kapandığında ve sinyal oluştuğunda bir pozisyon açmaya zorlamak gerekiyor, aksi takdirde ileri geri sallanır, sinyal sakinleşene kadar dakikada birkaç kez bir pozisyonu açıp kapatabilir :).

işte kod:


harici çift Parti = 0.1;
dış çift Per = 14;
bool gi_84 = DOĞRU;
int gi_88 = 366;
çift gd_92 = 0.02;
çift gd_100 = 0.2;
int g_period_108 = 14;
int gi_112 = 50;
int g_slippage_116 = 0;



geçersiz başlangıç() {
int l_cmd_52;
int l_ticket_56;

string l_symbol_0 = Symbol();
double l_isar_8 = iCustom(NULL,0,"daytrend-t01",Per,0,0);
double l_isar_9 = iCustom(NULL,5,"daytrend-t01",Per,0,0);
int l_cmd_40 = -1;
int l_ord_total_44 = OrdersTotal();
Parti = MathMax(Lot, MarketInfo(l_symbol_0, MODE_MINLOT));
for (int li_48 = l_ord_total_44; li_48 > 0; li_48--) {
if (OrderSelect(li_48 - 1, SELECT_BY_POS) == DOĞRU) {
l_cmd_52 = OrderType();
(OrderSymbol() != l_symbol_0 || l_cmd_52 < OP_BUY || l_cmd_52 > OP_SELL) devam ederse;
l_ticket_56 = OrderTicket();
Yeniler();
if (l_cmd_52 < OP_SELL) {
if (l_isar_8 > 0) {
while (OrderClose(l_ticket_56, Parti, Bid, g_slippage_116) == 0) FunError(gi_112);
l_cmd_40 = -1;
devam etmek;
}
} başka {
if (l_isar_8 < 0 ) {
while (OrderClose(l_ticket_56, Parti, Sor, g_slippage_116) == 0) FunError(gi_112);
l_cmd_40 = -1;
devam etmek;
}
}
l_cmd_40 = l_cmd_52;
}
}
if (l_cmd_40 < OP_BUY && g_period_108 == 0 ||Yılın Günü() < gi_88) {
Yeniler();
if (l_isar_8 < 0 && l_isar_9 < 0 ) while (OrderSend(l_symbol_0, OP_BUY, Lot, Ask, g_slippage_116, 0, 0) == 0) FunError(gi_112);
başka
if (l_isar_8 > 0 && l_isar_9 > 0 ) while (OrderSend(l_symbol_0, OP_SELL, Lot, Bid, g_slippage_116, 0, 0) == 0) FunError(gi_112);
}
}

geçersiz FunError(int ai_0) {
uyku(ai_0);
Yeniler();
}

geçersiz tanım() {
}

Bunun için aşağıdaki kodu kullanıyorum:


bool Fun_New_bar()
/*
işlev, yeni bir çubuğun varlığını belirlemek için oluşturuldu,
yeni bir çubuk yakalanırsa "doğru", aksi takdirde "yanlış".
===========
Değişkenler:
===========
Test_Time - test zamanı
*/
{
statik tarihsaat Test_Time=0;
if(Test_Time!=Zaman[0])
{
Test_Time=Zaman[0];
dönüş(doğru);
}
dönüş(yanlış);
}


Soruma gelince, gerçekten bu şekilde yapılamazsa bunun imkansız olduğunu bilen veya bana söyleyen birine yardım edin ... yoksa 3 gündür bir cevap arıyorum ve şu ana kadar boşuna. :-(

 
betmen >> :

Soruma gelince, gerçekten bu şekilde yapılamazsa bunun imkansız olduğunu bilen veya bana söyleyen birine yardım edin ... yoksa 3 gündür bir cevap arıyorum ve şu ana kadar boşuna. :-(

Parametreleri ayarlamak için özel kullanıcı arayüzü kullanılır. Onlar. belirli bir görev için özel olarak tasarlanmış bir pencere (belirli göstergeler için). Metatrader'da bu tür pencereler oluşturma imkanı yoktur. Bu nedenle, yürütülebilir bir dosyanın alınmasıyla bunları başka bir yerde oluşturmanız gerekir. Yürütülebilir dosya Exe veya Dll olabilir. Dll, göstergenin / komut dosyasının başlangıcında çağrılabilir, bu açıkça daha uygundur.

 
jartmailru >> :

Parametreleri ayarlamak için özel kullanıcı arayüzü kullanılır. Onlar. belirli bir görev için özel olarak tasarlanmış bir pencere (belirli göstergeler için). Metatrader'da bu tür pencereler oluşturma imkanı yoktur. Bu nedenle, yürütülebilir bir dosyanın alınmasıyla bunları başka bir yerde oluşturmanız gerekir. Yürütülebilir dosya Exe veya Dll olabilir. Dll, göstergenin / komut dosyasının başlangıcında çağrılabilir, bu açıkça daha uygundur.

Teşekkürler!!!

Delphi'de bir pencere monte etmek sorun değil, şimdi soru, "ana form" üzerindeki nesneler ile MQL4'teki değişkenler arasında bir arabirimin nasıl kurulacağıdır, bunun açıklandığı bir makaleye bir bağlantı paylaşırsanız, sadece şükranla patla... :-)

 
betmen >> :

Teşekkürler!!!

Delphi'de bir pencere monte etmek sorun değil, şimdi soru, "ana form" üzerindeki nesneler ile MQL4'teki değişkenler arasında bir arabirimin nasıl kurulacağıdır, bunun açıklandığı bir makaleye bir bağlantı paylaşırsanız, sadece şükranla patla... :-)

Dll'yi başlatmanın en uygun olduğu izlenimini edindim,

modally göster tehlikeli olabilir (gösterge UI iş parçacığında, sonuçları alabilirsiniz)-

ya da belki değil ... genel olarak, form ayrı bir ortamda çalıştırılabilir - Wtl ile her şey harika çıktı.

Gösterge, bu formu çalıştırmasına ve yoklamasına izin verilen bir bayrak bekleyecektir.

Ve sonra - form hazır olduğunu gösterdiğinde - işaretçilerle/referanslarla get(int & to[]) gibi farklı işlevler vardır,

hangi farklı verileri aktaracak. Dizilerde sorun olabilir...

Ve makalenin bağlantısını benimle paylaşın ;-).

 
jartmailru >> :

Dll'yi başlatmanın en uygun olduğu izlenimini edindim,

modally göster tehlikeli olabilir (gösterge UI iş parçacığındadır, sonuçları alabilirsiniz)-

ya da belki değil ... genel olarak, form ayrı bir ortamda çalıştırılabilir - Wtl ile her şey harika çıktı.

Gösterge, bu formu çalıştırmasına ve yoklamasına izin verilen bir bayrağı bekleyecektir.

Ve sonra - form hazır olduğunu gösterdiğinde - işaretçilerle/referanslarla get(int & to[]) gibi farklı işlevler vardır,

hangi farklı verileri aktaracak. Dizilerde sorun olabilir...

Ve makalenin bağlantısını benimle paylaşın ;-).

Soru, standart göstergelerin, sayıları daha okunaklı bir şeyle değiştirme yeteneği ile göstergenin ayarlarını seçerken nasıl yeni bir "Parametreler" sekmesi çizdiğiydi.

Örneğin, MA'yı ararsanız:


gösterge kodunda, bu "MA_Method" değişkenidir ve duruma göre yöntem seçilir


geçiş(MA_Yöntem)
{
durum 1: short_name="EMA("; draw_begin=0; break;
durum 2: short_name="SMMA("; ara;
durum 3: short_name="LWMA("; ara;
varsayılan :
MA_Yöntem=0;
short_name="SMA(";


Başlatma sırasında başka bir geliştirme ortamından derlenmiş bir exe başlatmayı öneriyorsunuz, bir seçenek olarak danışmanın başlatılması sırasında bir tür exe dosyasını başlatmak gerçekten kabul edilebilir, ancak daha sonra başka bir sorun ortaya çıkıyor - programdan değişkenlere nasıl veri aktarılacağı göstergenin kendisi?

yani, combobox1.text değeri MA_Method'a geçirilen bir sayıya nasıl dönüştürülür?

Bir dosya aracılığıyla bir şekilde estetik değil ve MetaTrader ve oluşturduğum "test.exe" için ortak bir bellek alanı yok gibi görünüyor.

 
Rita писал(а) >>

Sayesinde. Şimdi deneyeceğim.

//------------------------------------------------

Evet, işe yaradı. Uzmanlar geldi.

Ama bana yardımcı olmadı :-( hata için bir özür hala görünüyor ve MT kapanıyor