[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 573

 
//+------------------------------------------------------------------+
//|                                                       iTicks.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern int  delay_MSecond = 2000;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(delay_MSecond);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Strateji test cihazına istekler nasıl yapılır ? Örneğin, aşağıdaki komutun nasıl yürütüleceği: “Belirli bir setle belirli bir aralıkta bir EA testi çalıştırın. dosya ve, tamamlandığında, raporu kaydet"

 
alsu :
Bir başkasının koduyla hemen böyle başa çıkmak zor ... hazırlıksız olsaydı - Neuron.Study() işlevinde Imin,Imax,Jmin,Jmax değerlerini kontrol ederdim. 0 çağında, 32 değeri lR olarak iletilir ve bu daha sonra indekslemede kullanılır (genellikle, dizileri 0'dan boyut-1'e indeksleriz). Hatanın burada dolanması oldukça olasıdır.

Gerçekten de, hata bu hesaplamalarla ilişkilendirildi. teşekkürler
 
alkador :

Strateji testçisine istekler nasıl yapılır? Örneğin, aşağıdaki komutun nasıl yürütüleceği: “Belirli bir setle belirli bir aralıkta bir EA testi çalıştırın. dosya ve, tamamlandığında, raporu kaydet"

Başlangıç yapılandırması

İstemci terminali, önceden tanımlanmış ayarlarla başlatılabilir. Bunu yapmak için, konfigürasyon dosyasının adı bir parametre olarak istemci terminaline iletilir.

Örneğin:

 terminal.exe yapılandırma\start.ini
  terminal.exe test1.txt
  terminal.exe "C:\Program Files\MetaTrader 4\config\settings25.ini"

Dosyanın tam yolu belirtilmemişse (Sürücü:\SubDirectory\FileName), dosya istemci terminalinin dizininde aranacaktır. Yapılandırma dosyası aşağıdaki formun satırlarını içerir:
[Parametre] = [Değer]

Yorumlar noktalı virgül (;) ile başlar ve işlenmez.

Yapılandırma dosyası parametreleri birkaç gruba ayrılabilir: genel ayarlar, proxy sunucu ayarları ( terminal ayarları tablosundaki "Sunucu" sekmesi ), FTP ayarları (terminal ayarları tablosundaki "Yayınlama" sekmesi ), uzman ayarları ( "Uzmanlar" sekmesi). ayarlar tablosu ) terminal ), bir Expert Advisor veya bir komut dosyasının tek bir başlatması için ayarlar, strateji test cihazını başlatmak için ayarlar.

Genel Ayarlar

  • Profil - profiller dizinindeki bir alt dizinin adı. Müşteri terminalinde çizelgeler belirtilen profile göre açılacaktır. Bu parametre belirtilmezse mevcut profil açılacaktır.

  • MarketWatch - piyasa izleme penceresinde görüntülenecek enstrümanların listesini içeren dosyanın (\symbolsets dizini) adı. Böyle bir dosya , "Piyasa İzleme - Sembol Seti - Farklı Kaydet" penceresi bağlam menüsü komutu kullanılarak elde edilebilir.

  • Giriş - başlangıçta bağlanılacak hesap numarası. Bu parametre eksikse, mevcut oturum açma kullanılacaktır.

  • Şifre - sisteme giriş yapmak için şifre. İstemci terminali kişisel verileri diskte saklarsa ve bağlı hesap numarası listeye dahil edilirse bu parametre yok sayılır.

  • Sunucu - bağlantının yapılması gereken ticaret sunucusunun adı. Sunucu adı, yapılandırma dizininde depolanan karşılık gelen srv dosyasının adıyla aynıdır. Bağlı hesapla ilgili bilgiler diske kaydedilirse bu parametre yok sayılır.

  • Otomatik Yapılandırma - otomatik yapılandırma ayarının etkinleştirilip etkinleştirilmemesine bağlı olarak "doğru" veya "yanlış". Bu parametre eksikse, mevcut sunucu ayarlarından alınan değer kullanılacaktır.

  • DataServer - veri merkezinin adresi. Sunucu otomatik yapılandırması etkinleştirilirse bu giriş yoksayılabilir. Bu parametre eksikse, mevcut sunucu ayarlarından alınan değer kullanılacaktır.

  • EnableDDE - DDE sunucusunun etkinleştirilmesi gerekip gerekmediğine bağlı olarak "doğru" veya "yanlış". Bu parametre eksikse, mevcut sunucu ayarlarından alınan değer kullanılacaktır.

  • EnableNews - Haber almanın etkinleştirilip etkinleştirilmemesine bağlı olarak "doğru" veya "yanlış". Bu parametre eksikse, mevcut sunucu ayarlarından alınan değer kullanılacaktır.

Misal:

 ; Genel Ayarlar
  Profil=test 3
  MarketWatch=set2.set
  Giriş=12345
  şifre=xxxxxx
  Sunucu=MetaTeklifler-demo
  Otomatik Yapılandırma=yanlış
  VeriSunucusu=192.168.0.1:443
  EtkinleştirDDE=doğru
  EnableNews=yanlış

Vekil sunucu Ayarları

  • ProxyEnable - ticaret sunucusuyla iletişim kurmak için bir proxy sunucusunun kullanılması gerekip gerekmediğine bağlı olarak "doğru" veya "yanlış".

  • ProxyServer - proxy sunucu adresi.

  • ProxyType - proxy sunucu türü. "HTTP", "SOCKS4" veya "SOCKS5" olabilir.

  • ProxyLogin - proxy sunucusunda yetkilendirme için oturum açın.

  • ProxyPassword - proxy sunucusuna erişmek için parola.

Listelenen parametrelerden herhangi biri eksikse, istemci terminalinin mevcut ayarları kullanılır ( istemci terminal ayarları tablosundaki "Sunucu" sekmesindeki proxy ayarları ).

Misal:

 ; vekil sunucu Ayarları
  ProxyEnable=true
  ProxyServer=proxy.company.com:3128
  ProxyType=HTTP
  ProxyGiriş=kullanıcı45
  ProxyParolası=xxx

FTP Ayarları

  • FTPEnable - yayınları etkinleştirin/devre dışı bırakın. Kabul edilen değerler "doğru" veya "yanlış"tır.

  • FTPPassiveMode - pasif veri aktarım modunu etkinleştirin/devre dışı bırakın. Kabul edilen değerler "doğru" veya "yanlış"tır.

  • FTPAccount - durum verilerinin FTP'ye gönderilmesi gereken hesap numarası.

  • FTPSunucusu - FTP sunucusu adresi.

  • FTPLogin - FTP sunucusunda yetkilendirme için oturum açın.

  • FTPPassword - FTP sunucusuna erişim için parola.

  • FTPPath - FTP sunucusunda raporun yerleştirildiği dizinin adı.

  • FTPPeriod - raporu FTP sunucusuna dakikalar içinde gönderme sıklığı.

Listelenen parametrelerden herhangi biri yoksa, istemci terminalinin mevcut ayarları kullanılır ( terminal ayarları tablosundaki "Yayınlama" sekmesi ).

Misal:

 ; ftp ayarları
  FTPEnable=true
  FTPPassiveMode=yanlış
  FTPHesabı=12345
  FTPSunucusu=ftp.company.com
  FTPLogin=yönetici
  FTPPassword=pAssWOrd123
  FTPPath=/inetpub
  FTPPeriyodu=10

Uzman ayarları

  • ExpertsEnable - uzmanları etkinleştirin/devre dışı bırakın.

  • ExpertsDllImport - DLL içe aktarımını etkinleştirin/devre dışı bırakın.

  • ExpertsDllConfirm - DLL işlev çağrılarının manuel onayını etkinleştirin/devre dışı bırakın.

  • ExpertsExpImport - harici uzmanlardan veya MQL4 kitaplıklarından işlevlerin içe aktarılmasına izin verir/yasaklar.

  • ExpertsTrades - danışmanları ticaret yapmak için etkinleştirin/devre dışı bırakın.

  • ExpertsTradesConfirm - Expert Advisor tarafından alım satım işlemlerinin manuel olarak onaylanmasını etkinleştirin/devre dışı bırakın.

Dikkat: Uzman grubunun tüm parametreleri yalnızca "doğru" veya "yanlış" değerlerini alabilir.

Listelenen parametrelerden herhangi biri yoksa, istemci terminalinin mevcut ayarları kullanılır ( terminal ayarları tablosundaki "Uzmanlar" sekmesi ).

Misal:

 ; uzman ayarları
  ExpertsEnable=true
  ExpertsDllImport=true
  ExpertsDllConfirm=true
  ExpertsExpImport=true
  UzmanlarTicaret=true
  ExpertsTradesConfirm=false

Uzman Danışman ve/veya komut dosyasının tek bir başlatması için ayarlar

  • Sembol - tablosu terminalin başlamasından hemen sonra açılması gereken cihazın adı. İstemci terminali kapatıldıktan sonra bu ek çizelge ile ilgili bilgiler kaydedilmez. Bir konfigürasyon dosyası olmadan terminali yeniden başlatırken, bu tablo açılmayacaktır. Bu parametre eksikse ek grafik açılmaz.

  • Dönem - grafik dönemi (M1, M5, M15, M30, H1, H4, D1, W1, MN). Bu parametre eksikse H1 kullanılır.

  • Şablon - grafiğe uygulanacak şablon dosya adı (\templates dizini).

  • Uzman - istemci terminali başladıktan sonra başlatılması gereken uzmanın adı. Sembol ve Dönem parametrelerine göre açılan bir çizelge üzerinde Expert Advisor çalıştırılır. Symbol parametresi eksikse, ek grafik açılmaz ve mevcut profilin ilk grafiğinde Expert Advisor başlatılır. Mevcut profilde çizelge yoksa, Expert Advisor başlatılmayacaktır. Bu parametre eksikse, herhangi bir Expert Advisor da başlatılmaz.

  • ExpertParameters - Expert Advisor'ın parametreleriyle (\experts\presets dizini) dosyanın adı. Böyle bir dosya , uzmanın özellikler penceresinde "Giriş parametreleri - Kaydet" düğmesine basılarak oluşturulabilir. Genellikle varsayılan dışındaki parametreleri depolamak için kullanılır. Bu parametre yoksa, varsayılan parametreler kullanılır.

  • Komut dosyası - istemci terminali başladıktan sonra başlatılması gereken komut dosyasının adı. Komut dosyası, Uzman Danışman ile aynı kurallara göre başlatılır (yukarıda açıklanmıştır).

  • ScriptParameters - komut dosyası parametreleriyle dosya adı (\experts\presets dizini). Bu dosya, bir Uzman Danışman ile aynı şekilde oluşturulmuştur.

Misal:

 ; grafiği aç ve uzman ve/veya komut dosyasını çalıştır
  Sembol=EURUSD
  Dönem=H4
  Şablon=popüler.tpl
  Uzman=MACD Örneği
  ExpertParameters=macd.set
  komut dosyası=dönem_dönüştürücü
  ScriptParameters=

Strateji test cihazı başlatma ayarları

  • TestExpert - test için başlatılacak uzmanın adı. Bu parametre yoksa, test başlatılmaz.

  • TestExpertParameters - parametreleri içeren dosyanın adı (\tester dizini). Böyle bir dosya, test edilen uzmanın özellikler penceresinde "Giriş parametreleri - Kaydet" düğmesine basılarak oluşturulabilir.Genellikle varsayılan olanlar dışındaki parametreleri depolamak için kullanılır. Test edilen Uzman Danışmanın "Test" ve "Optimizasyon" sekmelerinden (ve ayrıca bu parametre eksikse "Giriş parametreleri" sekmesinden) diğer parametreleri \tester\[uzmanda otomatik olarak kaydedilen değerlerle doldurulur. name].ini dosyası son testten sonra.

  • TestSymbol - Uzman Danışmanın verileri üzerinde test edilmesi gereken cihazın adı. Bu parametre yoksa, test cihazında kullanılan son değer kullanılır.

  • TestPeriod - çizelge periyodu (M1, M5, M15, M30, H1, H4, D1, W1, MN). Bu parametre eksikse H1 kullanılır.

  • TestModel - test modeline bağlı olarak 0, 1 veya 2 (Tüm işaretler, Kontrol Noktaları, Açılış fiyatlarına göre). Bu parametrenin yokluğunda 0 (Tüm işaretler) değeri kullanılır.

  • TestOptimization - optimizasyonu etkinleştirin/devre dışı bırakın. Kabul edilen değerler "doğru" veya "yanlış"tır. Bu parametrenin yokluğunda "false" değeri kullanılır.

  • TestDateEnable - "Tarihleri kullan" seçeneğini etkinleştirin/devre dışı bırakın. Kabul edilen değerler "doğru" veya "yanlış"tır. Bu parametrenin yokluğunda "false" değeri kullanılır.

  • TestFromDate - YYYY.AA.GG biçiminde test aralığının başlangıç tarihi. Bu parametrenin yokluğunda 1970.01.01 varsayılır.

  • TestToDate - YYYY.AA.GG biçiminde test aralığının bitiş tarihi. Bu parametrenin yokluğunda 1970.01.01 varsayılır.

  • TestReport - test raporu dosya adı. Dosya, istemci terminalinin dizininde oluşturulacaktır. Göreceli bir yol belirtebilirsiniz, örneğin: tester\MovingAverageReport". Uzantı rapor dosyası adında belirtilmezse, ".htm" uzantısı değiştirilir. Bu parametre eksikse, test raporu oluşturulmaz. .

  • TestReplaceReport - rapor dosyasının yeniden kaydedilmesini etkinleştirin/devre dışı bırakın. Kabul edilen değerler "doğru" veya "yanlış"tır. Değer "yanlış" ise ve aynı ada sahip bir rapor dosyası zaten mevcutsa, rapor dosyası adına köşeli parantez içindeki bir seri numarası eklenecektir. Örneğin, "MovingAverageReport[1].htm". Bu parametrenin yokluğunda "false" değeri kullanılır.

  • TestShutdownTerminal - testten sonra terminal kapatmayı etkinleştirin/devre dışı bırakın. Kabul edilen değerler "doğru" veya "yanlış"tır. Bu parametrenin yokluğunda "false" değeri kullanılır. Test sırasında kullanıcı "Durdur" düğmesine basarsa, kullanıcı kontrolü aldığından bu parametrenin değeri "yanlış" olarak sıfırlanır.

Misal:

 ; strateji test cihazını başlat
  TestExpert=Hareketli Ortalama
  TestExpertParameters=ma0.set
  TestSymbol=EURUSD
  TestPeriyodu=H1
  TestModeli=2
  TestOptimizasyon=yanlış
  TestDateEnable=true
  TestFromDate=1970.01.01
  TestToDate=2006.06.06
  TestReport=MovingAverageReport
  TestReplaceReport=yanlış
  TestShutdownTerminal=true

 
AndEv :
Söylemek. bilen varsa, böyle bir soru: Her 0,5 saniyede bir döngülü bir komut dosyasına ihtiyacınız var. göstergelerin yeniden başlatılmasıyla mevcut grafikteki "Güncelle" düğmesine "bastı". WindowRedraw() ve Sleep(500) kullanarak döngülü bir komut dosyası oluşturmaya çalıştım, ancak göstergeler yeniden başlatılmadı.
Bu kitaplık , MT4'ü yönetmek için farklı işlevlere sahiptir. Uzman Danışmanlar ve göstergeler için grafiği güncellemeye yönelik işlevler içerir. Bağımsız özellikler bile var. Komut dosyasını bir kez çalıştırın ve bu kadar. Kaldırıldı ve grafikler MT4 boşaltılana kadar güncellenmeye devam ediyor.
 

Ertelenen

Armen63 18.02.2012 14:47 |

Herkese merhaba lütfen yardım edin nasıl uygulanacağını bilmiyorum .. biri bana söyleyebilir mi? xocu chtobi v sovetnike obshee chislo sat veya al orderov kontrolirovalos int Total1 = OrdersTotal();

if (Toplam1 <= MaksOrders || MaksOrders == 0) tak ya kontroliruyu vse tipi sipariş bir nado po otdelnosti i dlya sat i dlya satın al

 

Armen'e 63

 int CountBuys() 
{
   int l_count_4 = 0 ;
   int l_ord_total_12 = OrdersTotal ();
   for ( int l_pos_8 = 0 ; l_pos_8 < l_ord_total_12; l_pos_8++) {
       OrderSelect (l_pos_8, SELECT_BY_POS, MODE_TRADES);
       if ( OrderSymbol () != Symbol () || OrderMagicNumber () != Magic) continue ;
       if ( OrderType () == OP_BUY) l_count_4++;
   }
   return (l_count_4);
}

int CountSells() 
{
   int l_count_4 = 0 ;
   int l_ord_total_12 = OrdersTotal ();
   for ( int l_pos_8 = 0 ; l_pos_8 < l_ord_total_12; l_pos_8++) {
       OrderSelect (l_pos_8, SELECT_BY_POS, MODE_TRADES);
       if ( OrderSymbol () != Symbol () || OrderMagicNumber () != Magic) continue ;
       if ( OrderType () == OP_SELL) l_count_4++;
   }
   return (l_count_4);
}
 

Merhaba sevgili forum kullanıcıları!

Yakın zamanda mql4 öğrenmeye başladım ve kendi Uzman Danışmanımı yazmaya karar verdim.

Aşağıdaki koşulu koda nasıl yazacağımı söyleyin: son üç satış fiyatı alındığında, sonraki her biri bir öncekinden daha yüksekse (ask3>ask2>ask1), satın alma emri verin

Umarım amacımı netleştirmişimdir), bir yanlışlık varsa açıklamamı isteyin)

Yardımın için çok minnettar olacağım))

 
bunun gibi
 datetime ask= TimeCurrent ();
   double ask1= 0 ,ask2= 0 ,ask3= 0 ;
   ask1=Ask;
   if (ask!= TimeCurrent ()){ask2=Ask;ask= TimeCurrent ()}
   if (ask!= TimeCurrent ()){ask3=Ask;}
   
belki yanılıyorum - sadece öğreniyorum
 
openlive :
örneğin, belki yanılıyorum - sadece öğreniyorum


Danışmanın her onay işaretini işlediğine inanıyoruz, o zaman biraz farklı yapmak daha iyidir

 int start(){
   static double ask1= 1 , ask2=- 1 , ask3=- 1 ;
   ask3=ask2;
   ask2=ask1;
   ask1=Ask;

   if (ask3> 0 ) {
       if (ask1>ask2) {
         if (ask2>ask3) {
             //условие выполнено для бай
         }
      }
       if (ask1<ask2) {
         if (ask2<ask3) {
             //условие выполнено для селл
         }
      }
   }
}