Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Controllare i confini dell'array specificando una stringa nel codice è molto utile. Una volta era: dividi per zero e guarda dove vuoi. Ed è ancora peggio se l'errore non è apparso.
Potresti fare un esempio di come farlo? Non ho trovato nulla su questa caratteristica nella documentazione.
Esattamente! Non c'è bisogno di fare nulla ora. Aprite la scheda "esperti" e leggete i registri. Se appare un errore, vedrete un messaggio al riguardo. Come:
array out of range....... che indica il numero di linea nel codice.
Aprite la scheda "esperti" e leggete i registri.
Prova a cambiare il caso della prima lettera del nome dello script/indicatore. Anche tu sei stato in difficoltà una volta https://www.mql5.com/ru/forum/152533/page2#982156
P.S: bene, cambia stringa con char[]
Rispondi, Pavlik!
Buon per te Pavlik!
Il tuo codice ha funzionato subito!
Ora potete eseguire il
script!
Resta da inserire nell'indicatore!
Il tuo codice è stato inserito nell'indicatore!
c'è solo un piccolo ostacolo
l'indicatore non vuole riconoscere il nome
Ho scritto il nome nel posto
da cui lo script dovrebbe essere chiamato.
Tutto ciò che rimane è che lo script sia
riconosciuto!
potete aiutarmi?
Cordiali saluti
punsa
Rispondi, Pavlik!
Sei grande, Pavlik!
il tuo codice ha funzionato subito!
ora è possibile eseguire il
il copione!
Resta da inserire nell'indicatore!
Il tuo codice è stato inserito nell'indicatore!
c'è solo un piccolo ostacolo
l'indicatore non vuole riconoscere il nome
Ho scritto il nome nel posto
da cui lo script dovrebbe essere chiamato.
Tutto ciò che rimane è che lo script sia
riconosciuto!
potete aiutarmi?
Cordiali saluti
Panza
Ti aiuterò se ne hai bisogno
Ti aiuterò se hai bisogno di aiuto.
Ciao, Vinin!
grazie mille
per aver voluto aiutare!
Vi mando per una panoramica di come il
chiamata script compositore
pansa
____________________________________
Ciao Pavlik!
Vorrei mostrarvi un esempio
come è stata organizzata la chiamata allo script
con la compostiera, ora non funziona.
per la revisione
pansa
//+------------------------------------------------------------------+
//|sample_execute_script.mq4 |
//+------------------------------------------------------------------+
#importare "user32.dll"
int RegisterWindowMessageA(string MessageName);
int PostMessageA(int hwnd, int msg, int wparam, string Name);
void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);
#importare
int start()
{
int winHandle = WindowHandle( Symbol(), Period() );
//
//
//
if( signal < 0 && trigl==true && buy == true ) {StartScript( winHandle, "SchliesenProfitOrders" ); }
//
//
//
void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");
PostMessageA(hWnd, MessageNumber, 16, ScriptName);
if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
}
void ClearConfigDialog()
{
Dormire(100);
keybd_event(13, 0, 0, 0);
}
//
//
//
ritorno(0);
Ciao, Vinin!
grazie mille
per aver voluto aiutare!
Vi mando per una panoramica di come il
chiamata script compositore
pansa
____________________________________
Ciao Pavlik!
Vorrei mostrarvi un esempio
come è stata organizzata la chiamata allo script
con la compostiera, ora non funziona.
per la revisione
pansa
È davvero difficile cliccare sull'SRC e incollare il codice?!
Questo dovrebbe funzionare bene:
E non dimenticare il caso della prima lettera dello script, per esempio, se lo script "test" non inizia, dovresti provare "Test".
Rispettosamente, Pavlik ))
Questo dovrebbe funzionare bene:
E non dimenticate il caso della prima lettera dello script, per esempio, se lo script"test" non funziona, dovreste provare "Test".
Saluti, Pavlik )))
Ciao Pavlik!
Hai la tua raffinatezza e
ha cercato di mettere tutto nell'indicatore
ma l'indicatore non vuole.
vedi cosa puoi fare
per farlo funzionare!
Panza
//+------------------------------------------------------------------+
//|AltrTREND_Signal.mq4 |
//| Copyright 2014, MetaQuotes Software Corp.
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|AltrTrend_Signal_v2_2_alert.mq4|
//|Ramdass - Solo conversione|
//+------------------------------------------------------------------+
#property copyright "Autore - OlegVS, GOODMAN"
#proprietà rigorosa
#importare "user32.dll"
int RegisterWindowMessageA(uchar &lParam[]);
int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);
#importare
#proprietà indicator_chart_window
#proprietà indicator_buffers 2
#property indicator_color1 DeepSkyBlue
#property indicator_color2 OrangeRed
#proprietà indicator_width1 1
#proprietà indicator_width2 1
//---- parametri di ingresso
extern bool Alert_message=true;
extern int Time_alert_minutes=60; // ????? ????? ?????????? ???? ??? ? 60 ?????.
extern int K = 30;
extern double Kstop = 0,5;
extern inttern Kperiod = 150;
extern int PeriodADX = 7; //14;
extern int CountBars = 100;
//---- buffer
doppio val1[];
doppio val2[];
doppio AlertTime;
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'indicatore personalizzato
//+------------------------------------------------------------------+
int init()
{
stringa short_name;
//---- linea dell'indicatore
IndicatorBuffers(1);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,241);
IndicatorBuffers(2);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,242);
SetIndexBuffer(0,val1);
SetIndexBuffer(1,val2);
se(CountBars>=Bars)
CountBars=Bars;
SetIndexDrawBegin(0, Bars - CountBars + PeriodADX );
SetIndexDrawBegin(1, Bars - CountBars + PeriodADX );
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2|
//+------------------------------------------------------------------+
int start()
{
int i, shift, counted_bars = IndicatorCounted();
//----
if(counted_bars<0) return(-1);
//----
int i1, i2, t_per;
doppio Range, AvgRange, smin, smax, SsMax, SsMin, SSP, prezzo;
bool uptrend, vecchio;
//----
se(Bars <=PeriodADX+ 1)
ritorno(0);
//----
for(shift = CountBars - PeriodADX ; shift >= 0; shift--)
{
SSP = MathCeil(Kperiod / iADX(NULL, 0, PeriodADX , PRICE_CLOSE, MODE_MAIN, 1));
Gamma = 0;
AvgRange = 0;
for(i1 = shift; i1 <= shift + SSP; i1++)
{
AvgRange = AvgRange + MathAbs(High[i1] - Low[i1]);
}
Range = AvgRange / (SSP + 1);
//----
SsMax = High[shift];
SsMin = Basso[shift];
for(i2 = shift; i2 <= shift + SSP - 1; i2++)
{
prezzo = Alto[i2];
se(SsMax < prezzo)
SsMax= prezzo;
prezzo = Basso[i2];
se(SsMin >= prezzo)
SsMin = prezzo;
}
//----
smin = SsMin + (SsMax - SsMin)*K / 100;
smax = SsMax - (SsMax - SsMin)*K / 100;
val1[shift] = 0,0;
val2[shift] = 0,0;
se(Close[shift] < smin)
{
uptrend = falso;
}
se(Close[shift] > smax)
{
uptrend = vero;
}
if(uptrend != old && uptrend == true)
{
val1[shift] = Low[shift] - Range*Kstop;
}
if(uptrend != old && uptrend == false)
{
val2[shift] = High[shift] + Range*Kstop;
}
vecchio = tendenza al rialzo;
}
void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
{
char buf[];
StringToCharArray("MetaTrader4_Internal_Message", buf;)
int MT4InternalMsg = RegisterWindowMessageA(buf);
StringToCharArray("fPlayer", buf);
SendMessageA(hWnd, MT4InternalMsg, 16, buf);
if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
}
void ClearConfigDialog()
{
Dormire(100);
keybd_event(13, 0, 0, 0);
}
//---- Allarme
se (Periodo()<Tempo_di_allarme_minuti) t_per=Periodo(); altrimenti t_per=Tempo_di_allarme_minuti; // ???? <Time_alert, ????? ????? ?????????? ???? ??? ? ??.
if (Alert_message==true && CurTime()>AlertTime && val1[0]!=0.0)
{
Alert(Symbol(), "+++ BUY !!! +++" , "//AltrTrend_Signal_v2_2_alert ");
AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;
//PlaySound("payment.wav");
fPlayer ;//script
}
if (Alert_message==true && CurTime()>AlertTime && val2[0]!=0.0)
{
Alert(Symbol(), "+++ SELL !!!+++" , "//AltrTrend_Signal_v2_2_alert");
AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;
// PlaySound("payment.wav");
fPlayer ;
}
ritorno(0);
}
//+------------------------------------------------------------------+