Come codificare? - pagina 268

 

un altro problema

così ho rivisto la funzione Crossed con un MA_04_1H > MA_14_1H invece del cross == 1, e così via... e in genere ha risolto il problema... Ma mi chiedevo come posso filtrare i trade come buy, close, buy, close, buy, close, sell, close,... Si sta mangiando il saldo centesimo per centesimo come -0.17,-0.18,-0.21,-0.15, e così via....

ora sto cercando di implementare qualcosa che se compro un lotto più piccolo e va in profitto, chiudo quell'ordine e ne apro uno nuovo più grande finché non avviene l'incrocio... ma il problema di cui sopra non riesco a risolverlo...

qualcuno sa come filtrare queste piccole operazioni inutili?

 

bisogno di afl per questo codice

Ciao,

ho bisogno dell'afl per questo codice

#proprietà indicator_separate_window

#proprietà indicator_buffers 8

#proprietà indicator_color1 C'0x66,0xB3,0xFF

#proprietà indicator_color2 DodgerBlue

#proprietà indicator_color3 C'0x00,0x67,0xCE

#Proprietà indicatore_colore4 Bianco

#Proprietà indicatore_colore5 C'0xFF,0x33,0x33

#proprietà indicatore_colore6 C'0xC4,0x00,0x00

#proprietà indicatore_colore7 C'0x8C,0x00,0x00'

#proprietà indicator_color8 C'0x82,0x24,0x00'

extern int Periode = 30;

extern bool invert_strength = FALSE;

extern string CurrencyPair = "";

extern string NOTE0 = "inserire currencypair in maiuscolo";

extern string NOTE1 = "come EURUSD";

extern string NOTE2 = "lasciare vuoto per il simbolo corrente";

extern string NOTE3 = "se hai un conto mini";

extern string NOTE4 = "aggiungi un \"m\" ad esempio EURUSDm ";

double g_ibuf_132[];

double g_ibuf_136[]

double g_ibuf_140[];

double g_ibuf_144[]

doppio g_ibuf_148[];

doppio g_ibuf_152[];

doppio g_ibuf_156[];

double g_ibuf_160[];

doppio gda_unused_164[];

int init() {

SetIndexBuffer(0, g_ibuf_132);

SetIndexBuffer(1, g_ibuf_136);

SetIndexBuffer(2, g_ibuf_140);

SetIndexBuffer(3, g_ibuf_144);

SetIndexBuffer(4, g_ibuf_148);

SetIndexBuffer(5, g_ibuf_152);

SetIndexBuffer(6, g_ibuf_156);

SetIndexBuffer(7, g_ibuf_160);

SetIndexStyle(0, DRAW_HISTOGRAM, EMPTY, 5, C'0x66,0xB3,0xFF');

SetIndexStyle(1, DRAW_HISTOGRAM, VUOTO, 5, DodgerBlue);

SetIndexStyle(2, DRAW_HISTOGRAM, VUOTO, 5, C'0x00,0x67,0xCE');

SetIndexStyle(3, DRAW_HISTOGRAM, VUOTO, 5, BIANCO);

SetIndexStyle(4, DRAW_HISTOGRAM, VUOTO, 5, C'0xFF,0x33,0x33');

SetIndexStyle(5, DRAW_HISTOGRAM, VUOTO, 5, C'0xC4,0x00,0x00');

SetIndexStyle(6, DRAW_HISTOGRAM, VUOTO, 5, C'0x8C,0x00,0x00');

SetIndexStyle(7, DRAW_HISTOGRAM, VUOTO, 5, C'0x82,0x24,0x00');

for (int li_0 = 0; li_0 < 8; li_0++) SetIndexLabel(li_0, NULL);

if (CurrencyPair == "") CurrencyPair = Symbol();

if(iClose(CurrencyPair, 0, 0) == 0.0) CurrencyPair = Symbol();

IndicatorShortName(CurrencyPair + "(" + Periode + ")");

ritorno (1);

}

int deinit() {

return (0);

}

int start() {

doppio ld_8;

int li_0 = IndicatorCounted();

se (li_0 < 0) ritorna (-1);

se (li_0 > 0) li_0--;

for (int li_4 = Bars - li_0; li_4 >= 0; li_4--) {

ld_8 = iRSI(CurrencyPair, 0, Periode, PRICE_CLOSE, li_4);

if (invert_strength == TRUE) ld_8 -= 2.0 * (ld_8 - 50.0);

se (ld_8 <= 45.0) {

se (ld_8 42.0) drawblock(0, 0, 0, 0, 0, 5, 0, 0, 0, 0, li_4);

altrimenti {

if (ld_8 38.0) drawblock(0, 0, 0, 0, 0, 0, 5, 0, 0, 0, li_4);

else {

if (ld_8 35.0) drawblock(0, 0, 0, 0, 0, 0, 0, 5, 0, 0, li_4);

altrimenti drawblock(0, 0, 0, 0, 0, 0, 0, 0, 5, li_4);

}

}

} else {

se (ld_8 >= 55.0) {

if (ld_8 > 55.0 && ld_8 < 57.0) drawblock(5, 0, 0, 0, 0, 0, 0, 0, li_4);

altrimenti {

if (ld_8 >= 58.0 && ld_8 < 60.0) drawblock(0, 5, 0, 0, 0, 0, 0, 0, li_4);

altrimenti drawblock(0, 0, 5, 0, 0, 0, 0, 0, 0, 0, li_4);

}

} else drawblock(0, 0, 0, 5, 0, 0, 0, 0, 0, li_4);

}

}

return (0);

}

void drawblock(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24, int ai_28, int ai_32) {

g_ibuf_132[ai_32] = ai_0;

g_ibuf_136[ai_32] = ai_4

g_ibuf_140[ai_32] = ai_8

g_ibuf_144[ai_32] = ai_12;

g_ibuf_148[ai_32] = ai_16;

g_ibuf_152[ai_32] = ai_20;

g_ibuf_156[ai_32] = ai_24;

g_ibuf_160[ai_32] = ai_28;

}

o per favore spiegatemi la logica dietro questo

grazie

kr

 

come NON comprare, chiudere, comprare, chiudere o vendere, chiudere, vendere, chiudere...

per favore... devo davvero sapere come evitare queste operazioni non redditizie...

 

Aiuto urgente. Convertire indicatore in EA (Auto Trader)

Sono un programmatore ma principiante nella programmazione di mql4.

Sto cercando di creare un EA (auto trader) riguardante un indicatore.

Ho allegato l'indicatore. Questo indicatore dà buoni segnali di tendenza.

Ora voglio fare un trader automatico per quanto riguarda i segnali di tendenza.

Algoritmo:

==================================================

Se SEGNALE DOWN allora apri un ordine SELL e chiudi l'ordine BUY precedente

Se SEGNALE SU allora apri un ordine di ACQUISTO e chiudi il precedente ordine di VENDITA

continua ....

==================================================

Voglio solo il trading manuale a quello automatico per quanto riguarda questo indicatore.

Qualcuno può aiutarmi? Ho provato ma non ho ottenuto il risultato

Penso che sarebbe un buon trader automatico. Per favore aiutatemi.

File:
 

domanda semplice, non riesco a trovare la risposta...

Qualcuno può dirmi perché questo funziona:

prezzo = MarketInfo("GBPJPY",MODE_ASK);

e questo no (quando symbol è un array di stringhe e la nona voce è "GBPJPY"):

prezzo = MarketInfo(simbolo[9],MODE_ASK);

??

 
TomthebombNL:
Qualcuno può dirmi perché questo funziona:

prezzo = MarketInfo("GBPJPY",MODE_ASK);

e questo no (quando symbol è un array di stringhe e la nona voce è "GBPJPY"):

prezzo = MarketInfo(simbolo[9],MODE_ASK);

??

Dalle informazioni che hai presentato, sono sicuro al 100% che questo dovrebbe funzionare, infatti, ho appena fatto un rapido test per provarlo. Ci deve essere qualcos'altro che non va nel tuo codice.

 
codersguru:
jdun,

Il modo più semplice per invertire il codice (vendere per comprare e comprare per vendere) è cambiare:

if(signal0 < signal1 ) GlobalVariableSet("TM0",1);

if(signal0 > signal1) GlobalVariableSet("TM0",0);[/CODE]

To:

[CODE]if(signal0 > signal1 ) GlobalVariableSet("TM0",1);

if(signal0 < signal1) GlobalVariableSet("TM0",0);

bello! Grazie per questa informazione.

 

Penso che molto probabilmente non hai definito il tuo array come stringa.

 

Se "GBPJPY" è il 9° elemento di un array il suo indice in notazione mql è 8 e non 9 (in notazione mql il 1° elemento di un array ha indice 0), quindi in quel caso dovresti usare questa forma:

price = MarketInfo(symbol[8],MODE_ASK);

Forse è questo il problema?

TomthebombNL:
Qualcuno può dirmi perché questo funziona:

prezzo = MarketInfo("GBPJPY",MODE_ASK);

e questo no (quando symbol è un array di stringhe e la nona voce è "GBPJPY"):

prezzo = MarketInfo(simbolo[9],MODE_ASK);

??
 

Ho ottenuto il numero giusto, ma forse ho fatto un po' di confusione nello spiegarlo, è la decima voce e per ottenerlo ho usato symbol[9]. Stranamente questo funziona:

high = iHigh(symbol[9], ...)

che mi dà il massimo. La mia dichiarazione è:

string symbol[] o dovrebbe essere come string[] symbol[] ?

Se provo a stamparlo con Alert(symbol[9]) dà anche uno spazio vuoto, un problema abbastanza strano... ma comunque grazie per i vostri suggerimenti.

Questo è il mio codice, uso il broker alpari a 5 cifre (l'alert mi dà zero per qualche motivo):

double high,low,price,distance, plaats;

int i,j,ticket, waarde;

stringa symbol[];

stringa zoekplaatssymbol;

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

//| funzione di inizializzazione dell'esperto |

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

int init()

{

//----

//----

return(0);

}

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

//| funzione di deinizializzazione esperto |

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

int deinit()

{

//----

//----

return(0);

}

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

//| funzione di inizio esperto |

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

int start()

{

//----

doppio usd=0.0;

double chf=0.0

double eur=0.0

double gbp=0.0

doppio aud=0.0;

doppio cad=0.0;

doppio jpy=0.0;

doppio nzd=0.0;

symbol[21] = {"USDCHF" , "EURUSD" , "GBPUSD" , "USDJPY" , "AUDUSD" , "USDCAD" , "EURGBP" , "EURCHF" , "EURJPY" , "GBPJPY" , "GBPCHF" , "EURAUD" , "NZDUSD" , "CHFJPY" ,

"EURCAD" , "AUDCAD" , "AUDJPY" , "CADJPY" , "EURNZD" , "AUDNZD" , "NZDJPY"};

int total=OrdersTotal();

//zoekplaatssymbol = symbol[9];

// waarde = zoekplaats(zoekplaatssymbol);

prezzo = MarketInfo(symbol[9],MODE_ASK);

Alert(price);

}

Motivazione: