5 bejegyzés megtekintése - 1-5 / 5
  • Szerző
    Bejegyzés
  • gab232
    Tag
    Bejegyzések száma: 1

    Szia!

    Nemrég álltam neki az EA programozásnak de az MQL nyelvet eleinte kicsit nehezen használtam és nekiálltam web-en különböző dll-eket/wrappereket keresni amivel C#-ban vagy Javaban lehet robotot írni, de ingyeneset és jól használhatót egyet sem találtam. Szóval nekiálltam írni egy sajátot, amivel jelenleg csak néhány alap függvényt lehet hívni (viszont a teljes robotot tetszőleges nyelven lehet írni).
    A kérdések: kerültél-e már olyan helyzetbe, hogy MQL-ben egy bizonyos problémát csak nagyon körülményesen tudtál csak megoldani, ill. van-e az ilyesmire való piaci igény?

    üdv,
    Gábor

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Szia Gábor!

    Többször kerültem már olyan helyzetbe, hogy külső DLL importból származó eljárásokat kellett használnom. Hozzáteszem, hogy számomra a DLL import olyan feladatok megoldását könnyíti meg, amelyek MQL-ből nem, vagy csak kifejezetten nehezen oldhatóak meg. Robotok dll-be való kiszervezését nem feltétlen tartom jó ötletnek – a sebesség rovására is mehet, hogy ha első lépésként (és persze folyamatosan) az MT4-ben natívan jelenlévő adatokat (pl. gyertyaadatok) először át kell adni a DLL-es nem natív eljárásoknak. Ez bizonyos szituációkban hátrányt és sebességlassulást eredményezhet.

    A wrapper amúgy egy jó ötlet lenne, de a fentiek fényében rettentő bonyolultnak érzem hogy az MT4 natív programnyelve helyett egy dll wrapper dolgozza át egy külső programnyelvből származó utasításokat, eredményeket – és mindezt természetesen full duplex módon.

    Remélem, jól értettem a kérdésed.

    szs
    Tag
    Bejegyzések száma: 11

    Szia Radu

    Nagyon sokat lehet tanulni a fórumból is, sok kérdés megválaszolódik ott kérdés nélkül is.
    Azt szeretném kérdezni Tőled, hogy próbáltam külső dll funkciót készíteni, de nem működik. A fordító Borland C5.02 , az újakat nem ismerem. A dll előáll a helyén ..experts\libraries könytárba. Hibát nem jelez, viszont futtatáskor a ciklusok szaladnak, de a meghívott függvény után nem működik. A kód szerintem jó, a fordításkor lehet a hiba ?

    //---------------------------------------------------------------
    // META.dll   Borland C  5.02  külső függvény 
    #include 
    int osszead(int a, int b)  {
         int c = a+b;        printf("meta.dll   osszead %d + %d = %d",a,b,c);
         return(c);
    }//--
    
    //  META Kod
    //------------------------------------------------------------------
    #import "meta.dll"
    int osszead(int a, int b);     // Borland C fuggveny
    #import
    int Belep, Count;
    //+------------------------------------------------------------------+
    int start() {
     if (Bars > Belep) {     Belep = Bars;    Count++;
                  Uzen(Count+"=");      // EZ megy és a ciklus is megy
            int a = osszead(Count,5);   // Innen semmi nincs
                  Uzen(Count+" es "+5+" =  "+a); 
                  Comment("= "+Count);
     }//      
       return(0);
    }//--end
    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Szerintem a printf -et felejtsd el, a kapott értéket írasd ki, vagy logolj fájlba. De ez csak ötlet, DLL programozásban nem vagyok otthon.

    A kód többi része jónak tűnik.

    szs
    Tag
    Bejegyzések száma: 11

    Nem az #include és a printf az oka , nélküle is ugyanaz a helyzet. Szerintem a hiba a fordítási beállításnál lesz akkor. Ez csak egy próba teszt lett volna. Köszönöm .

5 bejegyzés megtekintése - 1-5 / 5
  • Be kell jelentkezni a hozzászóláshoz.