Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1067
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
Aiuto, per favore! Ci sono 2 file: un indicatore e un Expert Advisor. Come riferirsi correttamente alla funzione nell'indicatore tramite #include? iCustom non è adatto per vari motivi. Questo è ciò che ho scritto nell'indicatore:
E questo è ciò che ho scritto nell'Expert Advisor:
Ma per qualche motivo, l'Expert Advisor non funziona, l'indicatore non appare nel grafico dei prezzi durante i test. L'ho scritto correttamente, e se c'è un errore, dov'è?
Tuta.
Non ne ho uno. Ma c'è sicuramente un file da qualche parte, da cui ottengo le informazioni registrate.
Per favore aiutatemi a compilare su mt4
FileClose' - espressione di tipo 'void' è illegale TickToCVS~.mq4 84 12
Non ne ho uno. Ma c'è sicuramente un file da qualche parte e io ottengo le informazioni registrate da esso.
Questo è il valore EMPTY_VALUE
Cercate dove sta spuntando.
Il mio screenshot mostra che il menu è di MetaEditor e il tuo screenshot è di MT.
Ciao ragazzi, la mia domanda è: non riesco a modificare un ordine. Ci sono due aspetti, non capisco la matematica della modifica, quindi per favore spiegatemela.
Per come la vedo io, SL= IF ORDERSELEKT,Bid-ORDERSTOPLOS*POINT,DIGITS
il secondo aspetto.imparato dal video XBMS
come non ho provato a cambiare i valori delle variabili nel tester eror 130 non il giusto stop loss e roba del genere
2016.06.28 21:42:23.402 2016.06.23 00:00 trade RSI inputs: Lots=0.1; Slippage=5; StopLoss=10; TakeProfit=30; RSIPeriod=7; Magic=1087;
anche se c'è una moltiplicazione da cifre e funzione sul caso di SL sbagliato
extern double Lots = 0.1;
extern int Slippage = 10;
extern int StopLoss = 10;
extern int TakeProfit =30;
extern int RSIPeriod = 7;
extern int Magic =1087;
doppio MaRSI;
int TP,SL;
bool tfu;
//+------------------------------------------------------------------+
//| Funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int OnInit()
{
se(Cifre == 3||Cifre == 5)
{
Scivolamento *= 10;
TakeProfit *= 10;
StopLoss *= 10;
}
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Funzione di deinizializzazione dell'esperto |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| funzione tick esperto |
//+------------------------------------------------------------------+
void OnTick()
{
//+------------------------------------------------------------------+
//aprire la vendita
//+------------------------------------------------------------------+
MaRSI=iRSI(Symbol(),0, RSIPeriod,PRICE_CLOSE,1);
se(CountTrades() <= 0&MaRSI<=30 )
{
if( SendOrder(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0, "test",Magic,0,Green))
{ int ticket = OrderTicket();
SL = NormalizeDouble( Ask - StopLoss*Point,Digits);
TP = NormalizeDouble( Ask + TakeProfit*Point,Digits);
ModifyOrder(ticket,OrderOpenPrice(),SL,TP,0,Black);
}
}// if(CountTrades <= 0&MaRSI>=70 )
//+------------------------------------------------------------------+
//aprire l'acquisto
//+------------------------------------------------------------------+
}//ONTICK
//+------------------------------------------------------------------+
//+contatore di ordini
//+------------------------------------------------------------------+
int CountTrades ()
{
int count = 0;
for(int i = OrdiniTotali()-1;i>=0;i--)
{
if( OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)//se l'ordine è nostro
count++;//aumentare il contatore
}//select order by index
}// order.i===primo ordine.
return(count);//restituisce il numero di ordini
}// funzione
//+------------------------------------------------------------------+
//funzione di piazzamento degli ordini con gestione degli errori
//+------------------------------------------------------------------+
int SendOrder( string symbol,int cmd,double volume,double price,int slippage,double stoploss,
double takeprofit,string comment,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError();
errare =0;
bool exit_cikl = false;
int ticket = -1;
int Retry = 10; //numero di tentativi per impostare un ordine
int cnt = 0; //conteggio dei tentativi
if(cmd == OP_BUY || cmd == OP_SELL)
{
mentre(!exit_cikl)
{
ticket = OrderSend(symbol,cmd,volume,price,slippage,stoploss,takeprofit,comment,magic,expiration,arrow_color);
err= GetLastError();
interruttore(err)
{
caso ERR_NO_ERROR:
exit_cikl = true;
pausa;
{ caso ERR_SERVER_BUSY:
caso ERR_NO_CONNECTION:
caso ERR_INVALID_PRICE:
caso ERR_OFF_QUOTES:
caso ERR_BROKER_BUSY:
caso ERR_TRADE_CONTEXT_BUSY:
cnt++;
pausa;
caso ERR_PRICE_CHANGED:
caso ERR_REQUOTE:
RefreshRates();
continuare;
default:
exit_cikl = true;
pausa;
}// switch switch(err)
se(cnt > Riprova)
exit_cikl = true;
se(!exit_cikl)
{
Dormire(1000);
RefreshRates();
}//se non usciamo dal ciclo if(!exit_cikl)
else
{
se(err != ERR_NO_ERROR)
{
Print("Error : " + IntegerToString(err));
}// se c'è ancora un errore if(err != ERR_NO_ERROR)
}// ALTROVE
se(err==ERR_NO_ERROR)
{
if( OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
return(ticket);
}// if(err==ERR_NO_ERROR)
Print("Errore di apertura dell'ordine dopo " + IntegerToString(cnt) +"tentativi");
ritorno(-1);
} //ciclo mentre
}// se il tipo di ordine è Comprare o Vendere
return(ticket);
}// Funzione SendOrder
//-------------------------------------------------------------------------------------------------------------
/funzione modifica ordine
//------------------------------------------------------------------------------------------------------------
ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime expiration,color arrow_color)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
prezzo = NormalizeDouble(prezzo,cifre);
stoploss = NormalizeDouble(stoploss,Digits);
takeprofit = NormalizeDouble(takeprofit,Digits);
CheckValidStop(Symbol(),price,stoploss);//funzione per cambiare lo stop minimo
int err = GetLastError();
err = 0 ;
int Retry = 10;
int cnt = 0;
bool exit_cikl = false;
risultato bool;
mentre(!exit_cikl)
{
risultato = OrderModify(ticket, price,stoploss,takeprofit,expiration, arrow_color);
err = GetLastError();
se(risultato == vero)
{
Print("Order #"+ IntegerToString(ticket), "successfully modified");
return(true);
}
interruttore(err)
{
caso ERR_NO_ERROR:
exit_cikl = true;
pausa;
{ caso ERR_SERVER_BUSY:
caso ERR_NO_CONNECTION:
caso ERR_INVALID_PRICE:
caso ERR_OFF_QUOTES:
caso ERR_BROKER_BUSY:
caso ERR_TRADE_CONTEXT_BUSY:
cnt++;
pausa;
caso ERR_PRICE_CHANGED:
caso ERR_REQUOTE:
RefreshRates();
continuare;
default:
exit_cikl = true;
pausa;
}// switch switch(err)
}// while(!exit_cikl)
se ( err != ERR_NO_ERROR)
{
Print("Errore nella modifica dell' ordine # " + IntegerToString(ticket));
Stampa("Codice di errore: " + IntegerToString(err));
}
}//(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
else
{
Print("Order selection failed, ticket = " + IntegerToString(ticket));
return(false);
}//se qualcosa va storto
return(true);
}// funzione modifica
//----------------------------------------------------------------------------------------------------
//ChtckValidStop
//--------------------------------------------------------------------------------------------------
void CheckValidStop(string symbol,double price,double& sl)
{
se(sl==0)
ritorno;
double min_stop_server = MarketInfo(symbol,MODE_STOPLEVEL)*MarketInfo(symbol,MODE_POINT);
if(MathAbs(price-sl) <= min_stop_server)
{
se(prezzo>sl)
sl = prezzo - min_stop_server;
else sl = sl + min_stop_server;
}// if(MathAbs(price-sl) <= min_stop_server)
sl = NormalizeDouble(sl,MarketInfo(symbol,MODE_DIGITS))
}// funzione
SI PREGA DI CONSIGLIARE!!!
Ci sono due ordini nella storia del trading: 1) SELL № tic 415 STOPLOSS 1.1000 lotto 0.01 2) SELL № tic 418 STOPLOSS 1.1000 lotto 0.02
Devo assegnare le variabili X=tick, Y=STOPLOSS e B=lot se il prezzo Asc è uguale allo STOPLOSS dell'ordine SELL. Come assegnare i primi valori al primo ordine e poi al secondo. Con me assegna sempre un valore al primo ordine.
SI PREGA DI CONSIGLIARE!!!
Ci sono due ordini nella storia del trading: 1) SELL № tic 415 STOPLOSS 1.1000 lotto 0.01 2) SELL № tic 418 STOPLOSS 1.1000 lotto 0.02
Devo assegnare le variabili X=tick, Y=STOPLOSS e B=lot se il prezzo Asc è uguale allo STOPLOSS dell'ordine SELL. Come assegnare i primi valori al primo ordine e poi al secondo. Con me assegna sempre un valore al primo ordine.
Questo argomento è pensato per aiutare coloro che hanno già qualcosa di scritto, ma non funziona proprio come vorrei. Per favore invia il tuo codice in modo che gli altri qui possano vedere cosa c'è di sbagliato e aiutarti.
E se vuoi essere scritto su ordinazione, è lì che si trova.