Come codificare? - pagina 274

 

Purtroppo non c'è modo di cambiare il commento una volta aperto un ordine. Poi diventa un privilegio esclusivo del broker (e lo cambiano in caso di chiusure parziali) Sembra che metatrader sia stato in grado di fornire il backtracking di chiusura parziale ad alcuni broker solo attraverso il campo di commento e poi hanno deciso di chiuderlo completamente dai cambiamenti a noi (semplici mortali)

JohnCrawdford:
ciao,

C'è un modo per cambiare l'OrderComment, dopo che l'ordine è stato creato?

Ho un EA che crea ordini pendenti in punti chiave che probabilmente verranno raggiunti, tuttavia a volte questi ordini devono essere cancellati/cancellati a causa di movimenti veloci indesiderati sui grafici, quindi non è possibile utilizzare il numero di ticket per identificare ogni ordine, perché ogni ordine di punto chiave può essere aperto e cancellato/cancellato più volte, così invece l'EA usa un OrderComment unico per identificare ogni ordine, ma ogni tanto il computer che esegue l'EA si guasta o la connessione internet non funziona, e questo incasina l'identificazione dell'ordine a punto chiave e quindi diventerebbe utile cambiare l'OrderComment per evitare errori causati dal casino che si crea dopo che l'EA si riavvia senza aver prima terminato l'esecuzione precedente.

Molto confuso, vero?

P.S. il numero magico viene usato per identificare gli ordini creati dall'EA, quindi non posso usare quel numero per identificare ogni ordine singolarmente.

Se qualcuno può dirmi se c'è un modo per modificare gli OrderComments gliene sarei grato,

Grazie in anticipo.
 

Come avere una compilazione dinamica su un EA?

Ciao mondo!

Voglio sapere come creare un EA con compilazione dinamica (F5) per esempio ogni 20 secondi.

Ho visto che la funzione F5 è stata definita da VK_F5 (Grazie Coders Guru!). Ma come eseguire?

Questo è il mio EA

**********************************

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

#proprietà copyright "Copyright © 2008, Systematic-Forex"

#proprietà link "http://www.systematic-forex.com"

#proprietà indicator_chart_window

#proprietà indicatore_buffer 1

#proprietà indicator_color1 LightGray // Giallo

extern int TimeFrame = 5;

/*

extern string help_magic_number = "impostalo se userai l'opzione di chiusura 3 - chiusura con numero magico";

extern int magic_number = 0; // impostalo se userai l'opzione di chiusura 3 - chiusura per numero magico

extern string help_comment_text = "impostalo se userai l'opzione di chiusura 4 - chiusura per commento";

extern string comment_text = "";

extern bool HotKeyOn = true;

extern bool CtrlOn = true;

extern bool ShiftOn = false;

extern bool AltOn = false;

extern string HotKey = "A";

*/

#importare "user32.dll"

bool GetAsyncKeyState(int nVirtKey);

#import

#include //per MessageBoxA

//---- MessageBox() Flags

#define MB_OK 0x00000000

#define MB_OKCANCEL 0x00000001

#define MB_ABORTRETRYIGNORE 0x00000002

#define MB_YESNOCANCEL 0x00000003

#define MB_YESNO 0x00000004

#define MB_RETRYCANCEL 0x00000005

#define MB_ICONHAND 0x00000010

#define MB_ICONQUESTION 0x00000020

#define MB_ICONEXCLAMATION 0x00000030

#define MB_ICONASTERISK 0x00000040

#define MB_USERICON 0x00000080

#define MB_ICONWARNING MB_ICONEXCLAMATION

#define MB_ICONERROR MB_ICONHAND

#define MB_ICONINFORMATION MB_ICONASTERISK

#define MB_ICONSTOP MB_ICONHAND

#define MB_DEFBUTTON1 0x00000000

#define MB_DEFBUTTON2 0x00000100

#define MB_DEFBUTTON3 0x00000200

#define MB_DEFBUTTON4 0x00000300

#define MB_APPLMODAL 0x00000000

#define MB_SYSTEMMODAL 0x00001000

#define MB_TASKMODAL 0x00002000

#define MB_HELP 0x00004000 // Help Button

#define MB_NOFOCUS 0x00008000

#define MB_SETFOREGROUND 0x00010000

#define MB_DEFAULT_DESKTOP_ONLY 0x00020000

#define MB_TOPMOST 0x00040000

#define MB_RIGHT 0x00080000

#define MB_RTLREADING 0x00100000

#define KEYEVENTF_EXTENDEDKEY 0x0001

#define KEYEVENTF_KEYUP 0x0002

#define VK_0 48

#define VK_1 49

#define VK_2 50

#define VK_3 51

#define VK_4 52

#define VK_5 53

#define VK_6 54

#define VK_7 55

#define VK_8 56

#define VK_9 57

#define VK_A 65

#define VK_B 66

#define VK_C 67

#define VK_D 68

#define VK_E 69

#define VK_F 70

#define VK_G 71

#define VK_H 72

#define VK_I 73

#define VK_J 74

#define VK_K 75

#define VK_L 76

#define VK_M 77

#define VK_N 78

#define VK_O 79

#define VK_P 80

#define VK_Q 81

#define VK_R 82

#define VK_S 83

#define VK_T 84

#define VK_U 85

#define VK_V 86

#define VK_W 87

#define VK_X 88

#define VK_Y 89

#define VK_Z 90

#define VK_LBUTTON 1 //Tasto sinistro del mouse

#define VK_RBUTTON 2 //Tasto destro del mouse

#define VK_CANCEL 3 //Esecuzione dell'interruzione del controllo

#define VK_MBUTTON 4 //Tasto centrale del mouse (mouse a tre tasti)

#define VK_BACK 8 //Tasto BACKSPACE

#define VK_TAB 9 //tasto TAB

#define VK_CLEAR 12 //Tasto CLEAR

#define VK_RETURN 13 //Tasto ENTER

#define VK_SHIFT 16 //tasto SHIFT

#define VK_CONTROL 17 /Tasto CTRL

#define VK_MENU 18 //Tasto ALT

#define VK_PAUSE 19 //chiave PAUSE

#define VK_CAPITAL 20 /Tasto CAPS LOCK

#define VK_ESCAPE 27 //TastoESC

#define VK_SPACE 32 //barra spaziatrice

#define VK_PRIOR 33 //Tasto PAGINA SU

#define VK_NEXT 34 //Tasto PAGE DOWN

#define VK_END 35 //Tasto FINE

#define VK_HOME 36 //chiave HOME

#define VK_LEFT 37 //tasto FRECCIA SINISTRA

#define VK_UP 38 //tasto FRECCIA SU

#define VK_RIGHT 39 //tasto FRECCIA DESTRA

#define VK_DOWN 40 //tasto FRECCIA GIÙ

#define VK_PRINT 42 /Tasto PRINT

#define VK_SNAPSHOT 44 /Tasto PRINT SCREEN

#define VK_INSERT 45 //Tasto INS

#define VK_DELETE 46 //Tasto DEL

#define VK_HELP 47 //chiave HELP

#define VK_LWIN 91 //Tasto Windows sinistro (tastiera Microsoft® Natural®)

#define VK_RWIN 92 /Tasto Windows destro (tastiera naturale)

#define VK_APPS 93 //Tasto applicazioni (tastiera naturale)

#define VK_SLEEP 95 //Tasto riposo computer

#define VK_NUMPAD0 96 //Tasto 0 della tastiera numerica

#define VK_NUMPAD1 97 //Tasto tastiera numerica 1

#define VK_NUMPAD2 98 //Tasto tastiera numerica 2

#define VK_NUMPAD3 99 //Tasto tastiera numerica 3

#define VK_NUMPAD4 100 //Tasto tastiera numerica 4

#define VK_NUMPAD5 101 //Tasto 5 della tastiera numerica

#define VK_NUMPAD6 102 //Tasto numerico 6

#define VK_NUMPAD7 103 //Tastiera numerica 7 tasti

#define VK_NUMPAD8 104 //Tasto 8 della tastiera numerica

#define VK_NUMPAD9 105 //Tasto 9 della tastiera numerica

#define VK_MULTIPLY 106 //Tasto moltiplica

#define VK_ADD 107 //Tasto aggiungi

#define VK_SEPARATOR 108 //Tasto separatore

#define VK_SUBTRACT 109 //Tasto di sottrazione

#define VK_DECIMAL 110 //Tasto decimale

#define VK_DIVIDE 111 //Tasto divisore

#define VK_F1 112 //Tasto F1

#define VK_F2 113 //Tasto F2

#define VK_F3 114 //F3 tasto

#define VK_F4 115 //F4 tasto

#define VK_F5 116 //F5 tasto

#define VK_F6 117 //F6 tasto

#define VK_F7 118 //F7 tasto

#define VK_F8 119 //F8 key

#define VK_F9 120 //F9 tasto

#define VK_F10 121 //F10 tasto

#define VK_F11 122 //F11 tasto

#define VK_F12 123 //F12 tasto

#define VK_F13 124 //F13 chiave

#define VK_NUMLOCK 144 //Tasto NUM LOCK

#define VK_SCROLL 145 //chiave BLOCCO SCROLL

#define VK_LSHIFT 160 //Tasto SHIFT sinistro

#define VK_RSHIFT 161 /Tasto SHIFT destro

#define VK_LCONTROL 162 //Tasto CONTROL sinistro

#define VK_RCONTROL 163 /Tasto CONTROL destro

#define VK_LMENU 164 //Tasto MENU sinistro

#define VK_RMENU 165 //Tasto MENU destro

//---- buffer

doppio Buffer[]

int i,j;

//+------------------------------------------------------------------+

//|funzione di inizializzazione dell'indicatore personalizzata

//+------------------------------------------------------------------+

int init()

{

//---- indicatori

SetIndexStyle(0,DRAW_LINE);

//SetIndexStyle(0,DRAW_SECTION);

//SetIndexStyle(0,DRAW_ARROW);

//SetIndexStyle(0,DRAW_HISTOGRAM); //SetIndexStyle(0,DRAW_HISTOGRAM);

//SetIndexStyle(0,DRAW_ZIGZAG);

//SetIndexStyle(0,DRAW_NONE);

SetIndexBuffer(0,Buffer);

SetIndexEmptyValue(0,EMPTY_VALUE);

Comment("\n"+"test_A_sar");

//----

return(0);

}

//+------------------------------------------------------------------+

//| Funzione di deinizializzazione dell'indicatore Custor

//+------------------------------------------------------------------+

int deinit()

{

Comment("");

return(0);

}

//+------------------------------------------------------------------+

//|Funzione di iterazione dell'indicatore personalizzata |

//+------------------------------------------------------------------+

int start()

{

int limite;

int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;

limite=Bars contate_bars;

for(int i=0; i<limite; i++)

{

datetime i_Time = iTime(NULL, 0, i);

int j = iBarShift(NULL, TimeFrame, i_Time, bool false);

double sar_m5 = iSAR(NULL, PERIOD_M5 , 0.02, 0.2, j + 0);

doppio var_indicateur = sar_m5 ;

/*

//

if(Secondi()== 20)

{

Compilato o VK_F5

}

if(Seconds()== 40)

{

Compilato o VK_F5

}

*/

Buffer= sar_m5;

}

return(0);

}

//+------------------------------------------------------------------+

**********************************

Cordiali saluti test_a_sar_m5.mq4test_a_sar_m5.mq4

File:
 

Aiuto

Sto affrontando un problema a causa di stop loss, se qualcuno può darmi una risposta in merito. il problema è in alcuni grafici metatrader il valore delle barre di prezzo mostra in cinque cifre (1.4545), ma nel mio metatrader mostra sei cifre (1.45456). così, quando si tenta di mettere stop loss secondo il vostro sistema, il valore di stop loss diventa 200 pips a 400 pips. non so come risolvere il problema. mi sto esponendo molto. ho fatto saltare il mio conto due volte a causa di questo problema.

Grazie in anticipo.

 

strategia kelly in martingala money management

Chiunque può modificare questo a strategia kelly o diviso per 10.

la mia dimensione del lotto è 0.10 quando l'equità di partenza è $250 questo dovrebbe cambiare a 0.11 quando l'equità cresce a $500

-------------------------------------------------------------------

if(Money_management)

{

switch(AccountType)

{

caso 0: lotsi=NormalizeDouble(MathCeil((rischio*AccountEquity())/10000)/10,1); break;

caso 1: lotsi=NormalizeDouble((risk*AccountEquity())/100000,2); break;

caso 2: lotsi=NormalizeDouble((risk*AccountEquity())/1000,2); break;

default: lotsi=NormalizeDouble(MathCeil((risk*AccountEquity())/10000)/10,1); break;

}

-------------------------------------------------------------------

Grazie

 

domanda icustom

So che ho postato sul thread icustom ma...

come secondo il codice del guru del codice

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

come posso ottenere un altro time frame con lo stesso buffer?

nota stessa clr terrebbe valore diverso per 2 diversi time frame.

come lavorare intorno ad esso?

 
khatrisushil:
Sto affrontando un problema a causa di stop loss, se qualcuno può darmi una risposta in merito. il problema è in alcuni grafici metatrader il valore delle barre di prezzo mostra in cinque cifre (1.4545) ma nel mio metatrader mostra un valore di sei cifre (1.45456). così, quando si tenta di mettere stop loss secondo il vostro sistema, il valore di stop loss diventa 200 pips a 400 pips. non so come risolvere il problema. mi sto esponendo molto. ho fatto saltare il mio conto due volte a causa di questo problema. grazie in anticipo.

pugno bisogno di rilevare il broker che cifra

nel codice si dovrebbe essere in grado di rilevare il tipo di cifra, c'è abbastanza esempio sulla codifica ea cifra.

quindi si potrebbe desiderare di studiare su alcuni EA che in grado di gestire sia 4 o 5 cifre broker

 

Aiutatemi a modificare il mio EA sul broker di esecuzione del mercato!

Ciao a tutti, sono un nuovo in EA, ho creato un EA con un segnale tragico:

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

doppio Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

se (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Order = SIGNAL_BUY;

se (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Ordine = SIGNAL_SELL;

Ma non capisco perché il mio EA può funzionare bene in esecuzione istantanea (penso di sì) ma in esecuzione di mercato non fa nulla, sono trader in easy-forex, il loro conto demo è in esecuzione istantanea il mio EA funziona bene, ma sul conto live con esecuzione di mercato il mio EA non fa nulla, cioè non può analizzare il grafico su quel MT4, non sbaglia, non fa nulla.

Ho contattato il supporto easy-forex e mi hanno detto che perché l'esecuzione istantanea e l'esecuzione di mercato sono diverse. Così ho trovato qualcuno che ha esperienza di EA e trading. Per favore, aiutatemi a modificare il mio EA.

Grazie mille!

 
alvintran:
Ciao a tutti, sono nuovo in EA, ho creato un EA con tragery Signal:

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

doppio Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

se (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Order = SIGNAL_BUY;

se (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Ordine = SIGNAL_SELL;

Ma non capisco perché il mio EA può funzionare bene in esecuzione istantanea (penso di sì) ma in esecuzione di mercato non fa nulla, sono trader in easy-forex, il loro conto demo è in esecuzione istantanea il mio EA funziona bene, ma sul conto live con esecuzione di mercato il mio EA non fa nulla, cioè non può analizzare il grafico su quel MT4, non sbaglia, non fa nulla.

Ho contattato il supporto easy-forex e mi hanno detto che perché l'esecuzione istantanea e l'esecuzione di mercato sono diverse. Così ho trovato qualcuno che ha esperienza di EA e trading. Per favore, aiutatemi a modificare il mio EA.

Grazie mille!

[Penso che possa essere un problema con SL/TP. Per favore mostrami il tuo codice, o la parte

dove mandi gli ordini.

Grazie,

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]Penso che possa essere un problema con SL/TP. Per favore mostrami il tuo codice, o una parte

dove si inviano gli ordini.

Grazie,

Grzesiek[/lang]

No no, non è un problema SL/TP, so che il problema, ho detto che non fa nulla, significa che sul conto demo ( esecuzione istantanea o qualcosa del genere non lo so) funziona bene, ma sul conto live non funziona, non ha alcun problema, semplicemente non fa nulla.

Questo EA è scritto da me, non si compra, non è in versione di prova, non è limitato.

Per favore, aiutatemi!

 

Aggiungere time frame e ottenere buffer

mtuppers:

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

come posso ottenere un altro time frame con lo stesso buffer?

notare che lo stesso clr avrebbe un valore diverso per 2 diversi time frame.

come aggirare il problema?

Ciao Mtuppers,

Time Frame corrente originale:

double clr = iCustom(NULL,0, "LSMA a colori",14,1500,5,0);

Aggiungi il periodo di tempo che vuoi e cambia il nome della variabile per renderla diversa (clr e clr2):

double clr2 = iCustom(NULL,Period_H1, "LSMA in Color",14,1500,5,0); // Periodo_H1 Time Frame

Nell'indicatore "LSMA a colori" - Ci sono 3 buffer per i colori, non uno solo, quindi potete usare 3 istruzioni iCustom per ottenerli tutti.

Ecco i numeri del buffer:

SetIndexBuffer(2,ExtMapBuffer1);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexBuffer(0,ExtMapBuffer3);

SetIndexBuffer(3,somma);

SetIndexBuffer(4,wt);

SetIndexBuffer(5,clr);

* Notate che nel vostro esempio, state usando il Buffer 0, quindi state effettivamente ottenendo solo un colore in ExtMapBuffer3. Il buffer "clr" è il Buffer 5.

Ecco le assegnazioni dei buffer di colore nell'indicatore:

ExtMapBuffer3[shift] = wt[shift]; //rosso

ExtMapBuffer2[shift] = wt[shift]; //verde

ExtMapBuffer1[shift] = wt[shift]; //giallo

Spero che questo aiuti,

Robert

Motivazione: