MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 10
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Tabii ki, sorunun sıfır çubuğundaki yeniden hesaplamadan kaynaklandığını anlıyorum, ancak bunu nasıl çözeceğimi bulamıyorum?
Şimdi 03 buggy.
İşte yer:
y=Neg;
Pos=positive;
Neg=negative;
Verileri basit değişkenlerde saklayın - bu yalnızca göstergenin ilk hesaplanması sırasında çalışır. Ardından, sıfır çubuğunda, önceki çubuktan veri içermesi gereken değişken, geçerli çubuktan, ancak önceki onay işaretinden veri içerecektir.
Şimdi 03 buggy.
İşte yer:
y=Neg;
Pos=positive;
Neg=negative;
Verileri basit değişkenlerde saklayın - bu yalnızca göstergenin ilk hesaplanması sırasında çalışır. Ardından, sıfır çubuğunda, önceki çubuktan veri içermesi gereken değişken, geçerli çubuktan, ancak önceki onay işaretinden veri içerecektir.
Evet, bunu anladım, elbette, sorunu grafik arabelleği olmadan nasıl çözeceğimi merak ediyorum - kaynakları kurtarmak için - bellek?
Burada bu gösterge üzerinde meditasyon yapın. Bir sürü statik değişkene sahiptir:
static int cDir= 0 ;
static int pDir= 0 ;
Tamponları değiştirmek için yapılırlar.
IndicatorCounted()=0 ise, LastTime sıfıra ayarlanmalıdır (diğerleri isteğe bağlıdır, ancak istenir).
Ardından, döngünün başında değerleri taşıyın:
{
LastTime= Time [i];
pDir=cDir;
}
else
{
cDir=pDir;
}
"c" ile başlayan değişkenler mevcut değerdir ve "p" ile başlayanlar bir önceki değerdir.
string MyFileName= "History_Of_Trades.csv" ;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart ()
{
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
//создаем файл и записываем в него заглавную строку
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
int file_handle= FileOpen (MyFileName, FILE_WRITE , " " );
string mytext= "Магик;Номер ордера;Время открытия;Время закрытия;Объем;Символ;Цена открытия;Цена закрытия;Своп;Прибыль" ;
FileWrite (file_handle, mytext);
FileClose (file_handle);
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
//записываем в файл данные по закрытым позициям
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
for ( int n= 1 ; n<= OrdersTotal (); n++) {
if ( OrderSelect (n- 1 , SELECT_BY_POS , MODE_HISTORY )) {
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
mytext= OrderMagicNumber ()+ ";"
+ OrderTicket ()+ ";"
+ TimeToString ( OrderOpenTime (), TIME_DATE | TIME_MINUTES )+ ";"
+ TimeToString ( OrderCloseTime (), TIME_DATE | TIME_MINUTES )+ ";"
+ DoubleToString ( OrderLots (), 2 )+ ";"
+ Symbol ()+ ";"
+ DoubleToString ( OrderOpenPrice (), Digits )+ ";"
+ DoubleToString ( OrderClosePrice (), Digits )+ ";"
+ DoubleToString ( OrderSwap (), 2 )+ ";"
+ DoubleToString ( OrderProfit (), 2 );
file_handle= FileOpen (MyFileName, FILE_READ | FILE_WRITE , " " );
FileSeek (file_handle, 0 , SEEK_END );
FileWrite (file_handle, mytext);
FileClose (file_handle);
}}}}
Merhaba. Lütfen kodu çözmeme yardım et. Mevcut ticaret geçmişini bir dosyaya yazacak bir komut dosyası yazmaya çalışıyorum. Ancak görünüşe göre kodda bir sorun var, çünkü komut dosyasının yürütülmesinin bir sonucu olarak dosyaya yalnızca iki satır kaydedilir: büyük harf (kodda bakın) ve tarihteki en eski anlaşmanın verileri. Sorunun ne olduğunu anlamıyorum. Kendi başıma çözemedim lütfen yardım edin.
Dmitry iyi bir makale yazdı.
Teşekkürler, ilginç, okuyacağım. tam ihtiyacım olan bir komut dosyası var, ama yine de benim için çalışmıyor, mql5 var ve bende mql4 var, derleyici bir sürü hata veriyor, görünüşe göre bunun için pek çok yabancı kelime var :(
Merhaba. Uyarıdan sonra göstergeden api.binaryteam.ru adresine göndermeniz gerekiyor. Uyarıdan sonra http://api.binaryteam.ru gibi bir satırın api.binaryteam.ru adresine http://api.binaryteam.ru/?request= gönderilmesi için gösterge.mq4 dosyasına hangi satırlar eklenmelidir? sinyal&key=12345472300af900f431234561234567&formname=yükseliş&type_account=demo&symbol=frxUSDCHF&duration=5 milyon&amount=3&bet= ÇAĞRI&kaynak=metatrader.
Danışmanlar için http://binaryteam.ru/addons/#api http://binaryteam.ru/files/mt4example_1.zip WebRequest yoluyla gönderme örneği vardır. Gösterge.mq4 dosyasına satır eklerken
extern double bet=1;
extern int expiration=1;
extern string key = "12345472300af900f431234561234567" ;
extern string type_account = "demo";
extern bool Flag = false;
extern string bettype;
.....
int start() {
....
условие покупки {
.....
Alert("алерт индюка - BUY!!!");
bettype = "CALL";
Print("направление ставки: ",bettype);
Flag = true;
Print(BinaryTeam());
}
условие продажи {
.....
Alert(""алерт индюка - SELL!!!");
bettype = "PUT";
Print("направление ставки: ",bettype);
Flag = true;
Print(BinaryTeam());
}
}
bool BinaryTeam()
{
char post[],result[];
int res;
string headers;
//--- для работы с сервером необходимо добавить URL
//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"):
string formname = "risefall";
string symbol = "frx" + Symbol();
string duration = IntegerToString(expiration) + "m";
string amount = DoubleToString(bet);
if(Flag==false)
{
Print("не задано направление торговли");
return(false);
}
//--- пример: http://api.binaryteam.ru/?request=signal&key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&formname=risefall&type_account=demo&symbol=frxUSDCHF&duration=5m&amount=3&bet=CALL&source=metatrader
//--- собираем строку для отправки
string send = "?request=signal" +
"&source=metatrader" +
"&type_account=" + type_account +
"&bet=" + bettype +
"&formname=" + formname +
"&date_start=now" +
"&symbol=" + symbol +
"&duration=" + duration +
"&barrier=0" +
"&amount=" + amount +
"&key=" + key;
Print(send);
ResetLastError();
int timeout=5000;
res = WebRequest("GET",url+send,NULL,NULL,timeout,post,0,result,headers);
if(res==-1)
{
Print("Ошибка в WebRequest. Код ошибки =",GetLastError());
MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
}
else
{
Print(CharArrayToString(result));
return(true);
}
Print("Непредвиденная ситуация");
return(false);
}
WebRequest'te 2016.11.16 13:50:01.783 hatası yazıyor. Hata kodu =4060
WebRequest işlevi olmadan istek nasıl iletilir? WebRequest'e benzer başka işlevler var mı? .mq4 gösterge dosyasına eklenebilmesi için
Ne tür bir senaryo. Bakalım.
Bu makalenin ekinde, sHistoryExport.mq5 olarak adlandırılır. Derleyicim, adları "HistoryDeal.." ile başlayan ve tanımlayıcıları "DEAL_.." ile başlayan işlevleri kabul etmiyor. İşte kod:
#property link "https://www.mql5.com"
#property version "1.00"
#property script_show_inputs
input bool UseDateFrom = false ; // Указывать дату начала
input datetime DateFrom= 0 ; // Дата начала
input bool UseDateTo= false ; // Указывать дату окончания
input datetime DateTo= 0 ; // Дата окончания
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart (){
datetime from,to;
if (UseDateFrom){
from=DateFrom;
}
else {
from= 0 ;
}
if (UseDateTo){
to=DateTo;
}
else {
to= TimeCurrent ();
}
if (! HistorySelect (from,to)){
Alert ( "Ошибка выделение истории" );
return ;
}
string FileName= "history.csv" ;
int h= FileOpen (FileName, FILE_WRITE | FILE_ANSI | FILE_CSV , ";" );
if (h== INVALID_HANDLE ){
Alert ( "Ошибка открытия файла" );
return ;
}
// первая строка, что бы знать, где что находится
FileWrite (h, "Time" , "Deal" , "Order" , "Symbol" , "Type" , "Direction" , "Volume" , "Price" , "Comission" , "Swap" , "Profit" , "Comment" );
// по всем сделкам
for ( int i= 0 ;i< HistoryDealsTotal ();i++){
ulong ticket= HistoryDealGetTicket (i);
if (ticket!= 0 ){
long type= HistoryDealGetInteger (ticket, DEAL_TYPE );
if (type== DEAL_TYPE_BUY || type== DEAL_TYPE_SELL ){
long entry= HistoryDealGetInteger (ticket, DEAL_ENTRY );
FileWrite (h,( datetime ) HistoryDealGetInteger (ticket, DEAL_TIME ),
ticket,
HistoryDealGetInteger (ticket, DEAL_ORDER ),
HistoryDealGetString (ticket, DEAL_SYMBOL ),
(type== DEAL_TYPE_BUY ? "buy" : "sell" ),
(entry== DEAL_ENTRY_IN ? "in" :(entry== DEAL_ENTRY_OUT ? "out" : "in/out" )),
DoubleToString ( HistoryDealGetDouble (ticket, DEAL_VOLUME ), 2 ),
HistoryDealGetDouble (ticket, DEAL_PRICE ),
DoubleToString ( HistoryDealGetDouble (ticket, DEAL_COMMISSION ), 2 ),
DoubleToString ( HistoryDealGetDouble (ticket, DEAL_SWAP ), 2 ),
DoubleToString ( HistoryDealGetDouble (ticket, DEAL_PROFIT ), 2 ),
HistoryDealGetString (ticket, DEAL_COMMENT )
);
}
}
else {
Alert ( "Ошибка выделения сделки, повторите попытку" );
FileClose (h);
return ;
}
}
FileClose (h);
Alert ( "Сохранение выполнено, см. файл " +FileName);
}
//+------------------------------------------------------------------+