Come codificare? - pagina 59

 

Ciao a tutti...

come posso impostare un codice d'ordine in metaeditor,

uso un conto demo... è possibile impostare un ordine nel conto demo

ho provato, ma non è riuscito

 

Parametro BE

Salve, ho bisogno di aiuto per aggiungere il parametro BE stop in questo EA.

Ho bisogno di aiuto per aggiungere il parametro BE stop in questo EA, l'ho preso dalla prima pagina di questo thread che si basa sul sistema Trendmanager.

Grazie in anticipo.

Cha.

e-trendmanager.mq4

File:
 

File MQ4 per favore

Salve.
Ho questo file di testo TrendmanagerEA, qualcuno potrebbe convertirlo in un file MQ4 per favore, lo testerò e lo confronterò con un altro EA.

Grazie in anticipo.

Cha.

#property copyright "Copyright ฉ 2006, www.easyforexsignals.com"

#property link "paul@easyforexsignals.com"

#define LONGCOLOR DodgerBlue

#define SHORTCOLOR ArancioneRosso

#define MAGICTM 20070610

extern double TMlots=0.1;

extern int MoveStopAmount = 20;

extern int MoveStopAfterProfitof = 55;

extern int minadxlevel = 20;

extern double minSolarWind = 0.25;

extern double minJuice = 0.001;

extern int StopLoss=50,

Slippage = 3,

TakeProfit=120;

datetime LastTMSignalTime;

extern int MinTimeBetweenSignals = 60;

int init(){

return(0);

}

int deinit(){

return(0);

}

int start()

{

int res= 0;

if(Bars<100 || IsTradeAllowed()==false) return;

CheckTrendManager(); // controlla il sistema di gestione delle tendenze

CheckForTMClose(); // controlla le chiusure su questo sistema

CheckForStopMove(); // sposta gli stop su qualsiasi operazione aperta

}

void CheckForStopMove() {

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!=MAGICTM || OrderSymbol()!=Symbol()) continua;

if(OrderType()==OP_BUY)

{

// spostare gli stop verso l'alto per bloccare il profitto

se ((OrderOpenPrice()-Ask) >= (MoveStopAfterProfitof * Point()) {

OrderModify(OrderTicket(),0,OrderOpenPrice()+(MoveStopAmount*Point),OrderTakeProfit(),0,Black);

}

}

if(OrderType()==OP_SELL)

{

// spostare gli stop verso l'alto per bloccare il profitto

if ((OrderOpenPrice() - Bid) >= (MoveStopAfterProfitof * Point()) {

OrderModify(OrderTicket(),0,OrderOpenPrice()-(MoveStopAmount*Point),OrderTakeProfit(),0,Black);

}

}

}

}

void CheckTrendManager() {

if (Time[0]-LastTMSignalTime > MinTimeBetweenSignals) {

doppio PipsStopLoss, PipsTakeProfit;

double TMbuy = iCustom(Symbol(),Period(), "TrendManagerNT",2, 0);

double TMsell = iCustom(Symbol(),Period(), "TrendManagerNT",3, 0);

int orderresult;

se (TMbuy > 0) {

if (CheckFilters(OP_BUY)==true) {

PipsStopLoss = Ask-(StopLoss * Point());

PipsTakeProfit = Ask+(TakeProfit * Point());

CloseExisting(OP_SELL);

orderresult =OrderSend(Symbol(),OP_BUY,TMlots,Ask,Slippage,PipsStopLoss, PipsTakeProfit,"",MAGICTM,0,Maroon);

Print(Time[0] + "BUY ON TM, il risultato dell'ordine era:" + orderresult + "stop:" + PipsStopLoss + ",takeprofit:" + PipsTakeProfit);

LastTMSignalTime = Time[0];

}

}

se (TMsell > 0){

if (CheckFilters(OP_SELL)==true) {

PipsStopLoss = Bid+(StopLoss * Point());

PipsTakeProfit = Bid-(TakeProfit * Point());

CloseExisting(OP_BUY);

orderresult = OrderSend(Symbol(),OP_SELL,TMlots,Bid,Slippage,PipsStopLoss,PipsTakeProfit,"",MAGICTM,0,Green);

Stampa (Time[0] + "SELL ON TM, il risultato dell'ordine era:" + orderresult + "stop:" + PipsStopLoss + ",takeprofit:" + PipsTakeProfit);

LastTMSignalTime = Time[0];

}

}

}

}

void CheckForTMClose() {

double TMclosesell = iCustom(Symbol(),Period(), "TrendManagerNT",4, 0);

double TMclosebuy = iCustom(Symbol(),Period(), "TrendManagerNT",5, 0);

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;

if(OrderMagicNumber()!=MAGICTM || OrderSymbol()!=Symbol()) continua;

//---- basta chiudere

if ((TMclosesell > 0) && (OrderType()==OP_SELL)) {

OrderClose(OrderTicket(),OrderLots(),Bid,10,Pink);

}

se ((TMclosebuy > 0) && (OrderType()==OP_BUY)) {

OrderClose(OrderTicket(),OrderLots(),Bid,10,Pink);

}

}

}

// chiude solo le posizioni esistenti

void CloseExisting(int OrderTyp)

{

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!=MAGICTM || OrderSymbol()!=Symbol()) continua;

//---- basta chiudere lo slippage std

if(OrderType()==OrderTyp)

{

OrderClose(OrderTicket(),OrderLots(),Bid,10,White);

}

}

}

bool CheckFilters(int OrderTyp) {

return(true);

}

 

Basta rinominare il file con estensione .mq4. Questo è tutto.

 

Ciao, ho provato a cambiarlo ma non funziona.

Ho provato a cambiarlo ma non funziona, puoi finirlo per me per favore?

Grazie.

Cha.

 
chawichsak:
Ciao.

Ho provato a cambiarlo ma non funziona.

Grazie.

Cha.

Fatto plut fissato alcuni bug nel codice.

Robert

File:
 

Aiuto necessario per la funzione ordeersend

Ciao a tutti,

sto avendo problemi con la funzione ordersend().

Ecco il codice che ho fatto:

int x = 1;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int start()

{

double prixdachat = MathMax(High[1],High[2]);

double prixdevente = MathMin(Low[1],Low[2]);

int ticket1,ticket2;

if (x==1)

{

ticket1=OrderSend(Symbol(),OP_BUY,1,prixdachat+10*Point,5,prixdachat,prixdachat+20*Point, "ordre",1,15,Green);

ticket2=OrderSend(Symbol(),OP_SELL,1,prixdevente-10*Point,5,prixdevente,prixdevente-20*Point, "ordre",2,15,Rosso);

Print("ordine lanciato");

x++;

if(ticket1<0)

{

Print("OrderSend 1 failed with error #",GetLastError());

return(0);

}

if(ticket2<0)

{

Print("OrderSend 2 failed with error #",GetLastError());

return(0);

}

}

}

return(0);

}

Con questo codice, ottengo l'errore #130 (errore si ferma)

Qualcuno può spiegarmi cosa c'è di sbagliato, non capisco...

grazie.

 

Se state usando la cosiddetta"Esecuzione immediata", cioè l'uso di ordini OP_BUY o OP_SELL, non potete specificare un prezzo d'entrata diverso da Ask per gli acquisti e Bid per le vendite.

 
fracte:
Ciao a tutti,

ticket1=OrderSend(Symbol(),OP_BUY,1,prixdachat+10*Point,5,prixdachat,prixdachat+20*Point, "ordre",1,15,Green);

ticket2=OrderSend(Symbol(),OP_SELL,1,prixdevente-10*Point,5,prixdevente,prixdevente-20*Point, "ordre",2,15,Rosso);

Con questo codice, ottengo l'errore #130 (l'errore si ferma)

Qualcuno può spiegarmi cosa c'è di sbagliato, non capisco...

grazie.

UTILIZZARE ORDINI PENDENTI INVECE DI ORDINI ISTANTANEI.

(es. cambiare OP_BUY PER OP_BUYSTOP e OP_SELL PER OP_SELLSTOP)

e andrà bene.

 

GRAZIE MILLE SIGNOR PIP,

CHA.