Скачать MetaTrader 5

В общем мониторинга счета через веб. [Что-то сидел хотел напрямую пхп со счетом соединить в обход терминала, как-то не очень.. ]

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Dmitry
811
Dmitry  
Господа, никто не замарачивался? Что-то сидел хотел напрямую пхп со счетом соединить в обход терминала, как-то не очень.. :(
Марк
392
Марк  

это вы хотите торговать со своего сервера посредством пхп?

Что именно не получилось? Каналы не найдены? с++ отлично дружите?

Eduard
235
Eduard  
Была уже тема, судя по всему автор ее уже убил, в связи с кучей негатива в теме. Краткое резюме - в обход никак, публичного апи доступа к серверу не опубликовано. Если я не прав, пусть метаквотс поправят. Язык не важен, хоть forth хоть brainfuck был бы API.
Yuriy Zaytsev
16124
Yuriy Zaytsev  
TedBeer >>:
Была уже тема, судя по всему автор ее уже убил, в связи с кучей негатива в теме. Краткое резюме - в обход никак, публичного апи доступа к серверу не опубликовано. Если я не прав, пусть метаквотс поправят. Язык не важен, хоть forth хоть brainfuck был бы API.

API дают некоторые брокеры ...

---

METAQUOTES API не дают... и видимо никогда не дадут



не вам лично TedBeer


да и зачем оно API, при неплохом терминале и хорошем языке


но если уж API

кто мешает делать конструкцию типа


    CountRates1  =   ArrayCopyRates(  dest_array1 , Symbol() , PERIOD_M15  )  ; // копируем весь массив таймсерии
    CountRates2  =   ArrayCopyRates(  dest_array2 , Symbol() , PERIOD_M30  )  ; // копируем весь массив таймсерии
    CountRates3  =   ArrayCopyRates(  dest_array3 , Symbol() , PERIOD_MH1  )  ; // копируем весь массив таймсерии
    CountRates4  =   ArrayCopyRates(  dest_array4 , Symbol() , PERIOD_MH4  )  ; // копируем весь массив таймсерии
    CountRates5  =   ArrayCopyRates(  dest_array5 , Symbol() , PERIOD_MD1  )  ; // копируем весь массив таймсерии
    CountRates6  =   ArrayCopyRates(  dest_array6 , Symbol() , PERIOD_MW1  )  ; // копируем весь массив таймсерии
 
//
    затем вызыват ьсвой API

//
   signal = MyAPI( dest_array1,dest_array2,... );  // тут  вызываем свой волшебный API
   if ( signal == OP_BUY )
   {
   }
   if ( signal == OP_SELL )
   {
   }  

и творить внутри своего API вызова секретные вещи которые - не получается реализовать в MQL4


оставив терминалу лишь


доступ к счету

и работу с ордерами !


и вынести всю боевую логику расчетов в свой любимый Си++ или DELPHI или кто на чем пишет


я не вижу никаких проблем в этом пути

Вот Вам и API, отсутствием которого так любят потакать фирму METAQUOTES

пожалуйста ! реализуйте никаких проблем!

они сделали все - что мы мы могли использовать API


зачем мне возится в API с проблемами открытия ордера - обработкой ошибок - входа на счет ? мне важно сосредоточиться

на логике работы МТС а не ковырятся с проблемами почему и как вылетела ошибка при запросе открыть ордер

путь на эту тему голова болит у METAQUOTES, тем более это у них на высоте

---


очень удобно

и защита от декомпилятора тут великолепная и скорость тестирования повыше

впрочем тестер лучше свой писать под свою тс - быстрее будет - мне к примеру универсальность тестера не нужна

но и тестер у них отличный!

пусть хоть кто то покажет лучше!



---

резюме


кто то может пояснить внятно! - зачем API доступ ?

Yuriy Zaytsev
16124
Yuriy Zaytsev  

Как вариант


пример из документации по API одного из брокеров!


попробуйте прочитав это скудное описание, что то реализовать!

сравните этот кусок обрезанной - я бы сказал кастрированной информации

с той массой информации которая есть по MQL


первая же серьезная проблема и желание писать под API конкретно одного брокера пропадет

- написав под одного брокера

для другого придется все переделывать

так как у него будет совсем другой API интерфейс

Файлы:
examples.zip 663 kb
Винсент
644
Винсент  
YuraZ >>:

но если уж API

кто мешает делать конструкцию типа


и творить внутри своего API вызова секретные вещи которые - не получается реализовать в MQL4


оставив терминалу лишь


доступ к счету

и работу с ордерами !


и вынести всю боевую логику расчетов в свой любимый Си++ или DELPHI или кто на чем пишет


спасибо за идею Юрий, объясните только ещё немного ламеру: что делать с функцией MyAPI? вернее как её оформить-то, как включаемый файл что-ли?


чо-то никак не въеду как код написанный, скажем, на с++ подключить к эксперту...


ЗЫ: а... врубился, я ж совсем забыл про импорт функций... :)


ЗЗЫ: а протестировать-то в стандартном тестере можно будет такую конструкцию (ну и прооптимизировать)?

Yuriy Zaytsev
16124
Yuriy Zaytsev  
Vinsent_Vega >>:

спасибо за идею Юрий, объясните только ещё немного ламеру: что делать с функцией MyAPI? вернее как её оформить-то, как включаемый файл что-ли?


чо-то никак не въеду как код написанный, скажем, на с++ подключить к эксперту...

это я назвал образно функцию

да имеется ввиду создание API на Си++ или чем то еще

все необходимые примеры имеются в стандартной поставке - там найдите пример experts\samples\DLLSample

вот к примеру реализация передачи High Low в свою функцию на Си++


#import "YZAPI.DLL"

int YurazAPIBlackBoxSecurety ( double &m[][6],int ); // оформляем

#


double dest_array[][6];

start()

{


CountRates = ArrayCopyRates( dest_array, Symbol(), PERIOD_D1 ) ; // копируем весь массив таймсерии - конечно на каждом тике не стоит - это как пример

// тут надо обработать 4066 ошибку


int signal = YurazAPIBlackBoxSecurety ( Array_m, CountRates ) ; // вызываем


if ( signal == OP_BUY )

{

// имеем сигнал

}

// ... и т д

}


----------

а это код на Си вашей функции API


#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>


#include <io.h>
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>

//----
#define MT4_EXPFUNC __declspec(dllexport)



#pragma pack(push,1)
struct RateInfo
{
unsigned int ctm;
double open;
double low;
double high;
double close;
double vol;
};
#pragma pack(pop)


BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
//----
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
//----
return(TRUE);
}


//

MT4_EXPFUNC double __stdcall YurazAPIBlackBoxSecurety (
const RateInfo* rates
,const int rates_total
)

{


// вот тут и происходит самое тайное и волшебное вычисления филоЗовского камня

// .. cod = 1 ; // допустим бай .. cod = 0 ; // допустим селл .. cod = -1; // нет сигнала

// делаем некие вычисления и получаем сигнал



return ( cod );

}


---

Винсент
644
Винсент  

YuraZ писал(а) >>

CountRates = ArrayCopyRates( dest_array, Symbol(), PERIOD_D1 ) ; // копируем весь массив таймсерии - конечно на каждом тике не стоит - это как пример


а как же их (таймсерии) тады передавать если не на каждом тике... эдак и протестировать буит нельзя нормально... хотя можно же вроде и не всю таймсерию передавать, а только нужное кол-во данных... (я уж не помню какую там функцию надо использовать)

Yuriy Zaytsev
16124
Yuriy Zaytsev  
Vinsent_Vega >>:

а как же их (таймсерии) тады передавать если не на каждом тике... эдак и протестировать буит нельзя нормально... хотя можно же вроде и не всю таймсерию передавать, а только нужное кол-во данных... (я уж не помню какую там функцию надо использовать)

Верно ну тайм серию достаточно загнать разок!

я просто пример привел!

конечно гнать ее туда на каждом тике не стоит

--

вопрос с какой целью Вы хотите идти в API ?

чего нет в MQL ?

Винсент
644
Винсент  
YuraZ >>:

вопрос с какой целью Вы хотите идти в API ?

чего нет в MQL ?

да конкретной цели пока нету... так, на будущее, если вдруг понадобится...

зы: я просто имел в виду, что если, у нас типа индикатор написан на другом языке, то не обязательно загонять в него всю таймсерию на каждом тике, можно скажем только для N последних баров...

Dmitry
811
Dmitry  

Интересно. Но вот есть же примеры, реализации мониторинга, например на ониксе или там тоже через терминал?

По идее через терминал сделать можно, но если счетов несколько, то надо как-то будет переконнекчиваться к разным серверам. Блин, можно, но как-то оно через "универсальный интерфейс"..

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий