¿Quién puede ayudar con el robot, por qué no funciona? - página 6 1234567 Nuevo comentario [Eliminado] 2016.02.16 19:33 #51 Entonces, ¿cuál es el fallo, al menos mostrarme? [Eliminado] 2016.02.16 19:36 #52 aquí está mi función para mt4 ecn, ndd, stp ...Ni un solo error en un año//+----------------------------------------------------------------------------+//| Función de apertura de pedidos (BeerGod) |//+----------------------------------------------------------------------------+//| Parámetros: |//| sy - nombre del instrumento ("" - símbolo actual) |//| op - operación || //| ll - lote |//| sl - nivel de parada |//| tp - tomar nivel |//| mn - MagicNumber |//+----------------------------------------------------------------------------+bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int MagicNumber=0){double MinLl = MarketInfo(Symbol(),MODE_MINLOT);double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT);ll = NormalizarDoble(ll,2);si (ll < MinLl) ll = MinLl; si no ll = ll;si (ll > MaxLl) ll = MaxLl; si no ll = ll;if (op == 0) // BUY opening{// Compruebe si hay fondos libres disponiblesif((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134)){Print(sy," ",ll," Es imposible abrir la orden Comprar, no hay suficiente dinero");return(0);}RefreshRates();// Orden de aperturaint ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor);if(ticketbuy<0)Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError());si noPrint(sy," OpenPosition. OrderSend Buy successfully");// Dormir (Pausa);// Modificar la orden (establecer el take profit y el stop loss)si (sl !=0 || tp !=0){//--- Los precios SL y TP calculados deben ser normalizadosdouble BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS))double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));//--- Si el valor de entrada es cero, sustituye el precio de modificación por cerosi (sl == 0) BSLoss = 0;si (tp == 0) BTProfit = 0;bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor);si(!resbuy)Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError());si noPrint(sy," OpenPosition. OrderModify Comprar con éxito");}}if (op == 1) // Abrir la venta.{// Comprobar la disponibilidad de fondos libresif((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134)){Print(sy," ",ll," Es imposible abrir la orden Vender, no hay suficiente dinero.");return(0);}RefreshRates();// Orden de aperturaint ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor);if(ticketsell<0)Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError());si noPrint(sy," OpenPosition. OrderSend Sell successfully");// Dormir (Pausa);// Modificar la orden (establecer el take profit y el stop loss)si (sl !=0 || tp !=0){//--- Los precios SL y TP calculados deben ser normalizadosdouble SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS))double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));//--- Si el valor de entrada es cero, sustituye el precio de modificación por cerosi (sl == 0) SSLoss = 0;si (tp == 0) STProfit = 0;bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor);if(!ressell)Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError());si noPrint(sy," OpenPosition. OrderModify Sell successfully");}}return(True);}/Fin Who can help with Preguntas de los principiantes Cualquier pregunta de los [Eliminado] 2016.02.16 19:38 #53 P.D. Moderadores, el código no se puede insertar a través del botón. Vladimir Karputov 2016.02.16 19:42 #54 Vladimir Zubov: P.D. Moderadores, el código no se puede insertar a través del botón.Estoy dando clases gratuitas (sin cargo) por Skype sobre la inserción de códigos:) if (sl == 0) SSLoss = 0; [Eliminado] 2016.02.16 19:45 #55 Karputov Vladimir: Doy clases gratuitas (sin cargo) por Skype sobre la inserción de códigos:)//+----------------------------------------------------------------------------+ //| Функция открытия ордера (BeerGod) | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int MagicNumber=0) { double MinLl = MarketInfo(Symbol(),MODE_MINLOT); double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT); ll = NormalizeDouble(ll,2); if (ll < MinLl) ll = MinLl; else ll = ll; if (ll > MaxLl) ll = MaxLl; else ll = ll; if (op == 0) // Открытие BUY { // Проверяем доступность свободных средств if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134)) { Print(sy," ",ll," It is impossible to open the order Buy, not enough money."); return(0); } RefreshRates(); // Открываем ордер int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor); if(ticketbuy<0) Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError()); else Print(sy," OpenPosition. OrderSend Buy successfully"); // Sleep (Pause); // Модифицируем ордер (выставляем тейкпрофит и стоплосс) if (sl !=0 || tp !=0) { //--- Вычисленные значения цен SL и TP должны быть нормализованы double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); //--- Если входящие значения ноль то заменяем цену модификации на ноль if (sl == 0) BSLoss = 0; if (tp == 0) BTProfit = 0; bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor); if(!resbuy) Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError()); else Print(sy," OpenPosition. OrderModify Buy successfully"); } } if (op == 1) // Открытие Sell { // Проверяем доступность свободных средств if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134)) { Print(sy," ",ll," It is impossible to open the order Sell, not enough money."); return(0); } RefreshRates(); // Открываем ордер int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor); if(ticketsell<0) Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError()); else Print(sy," OpenPosition. OrderSend Sell successfully"); // Sleep (Pause); // Модифицируем ордер (выставляем тейкпрофит и стоплосс) if (sl !=0 || tp !=0) { //--- Вычисленные значения цен SL и TP должны быть нормализованы double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); //--- Если входящие значения ноль то заменяем цену модификации на ноль if (sl == 0) SSLoss = 0; if (tp == 0) STProfit = 0; bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor); if(!ressell) Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError()); else Print(sy," OpenPosition. OrderModify Sell successfully"); } } return (True); } //End [Eliminado] 2016.02.16 19:46 #56 Karputov Vladimir: Doy clases gratuitas (sin cargo) por Skype sobre la inserción de códigos:) Si sólo pego el código, sí, pero si escribo más, el código desaparece [Eliminado] 2016.02.16 20:04 #57 Hay un error en alguna parte, al calcular PHP y MQL, si necesita ensamblador entonces ayuda. Sergey Gritsay 2016.02.17 06:54 #58 GIM: Gracias.Hecho, si usted tiene alguna pregunta sobre el código de escritura, también disponible en persona o en Skype Archivos adjuntos: GIM.mq4 9 kb GIM 2016.02.17 12:38 #59 Sergey Gritsay: listo, si tiene alguna pregunta sobre el código, correo electrónico o Skype La alerta sale con el mensaje: no hay precios. A la espera de una nueva garrapata... Sergey Gritsay 2016.02.17 12:50 #60 GIM: La Alerta sale con el mensaje: No hay precio. Esperamos una nueva garrapata...Tenía una cuenta demo que funcionaba bien y abría una operación a la primera. Necesito más detalles. 1234567 Nuevo comentario
aquí está mi función para mt4 ecn, ndd, stp ...
Ni un solo error en un año
//+----------------------------------------------------------------------------+
//| Función de apertura de pedidos (BeerGod) |
//+----------------------------------------------------------------------------+
//| Parámetros: |
//| sy - nombre del instrumento ("" - símbolo actual) |
//| op - operación |
| //| ll - lote |
//| sl - nivel de parada |
//| tp - tomar nivel |
//| mn - MagicNumber |
//+----------------------------------------------------------------------------+
bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int MagicNumber=0)
{
double MinLl = MarketInfo(Symbol(),MODE_MINLOT);
double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT);
ll = NormalizarDoble(ll,2);
si (ll < MinLl) ll = MinLl; si no ll = ll;
si (ll > MaxLl) ll = MaxLl; si no ll = ll;
if (op == 0) // BUY opening
{
// Compruebe si hay fondos libres disponibles
if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))
{
Print(sy," ",ll," Es imposible abrir la orden Comprar, no hay suficiente dinero");
return(0);
}
RefreshRates();
// Orden de apertura
int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor);
if(ticketbuy<0)
Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError());
si no
Print(sy," OpenPosition. OrderSend Buy successfully");
// Dormir (Pausa);
// Modificar la orden (establecer el take profit y el stop loss)
si (sl !=0 || tp !=0)
{
//--- Los precios SL y TP calculados deben ser normalizados
double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS))
double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
//--- Si el valor de entrada es cero, sustituye el precio de modificación por cero
si (sl == 0) BSLoss = 0;
si (tp == 0) BTProfit = 0;
bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor);
si(!resbuy)
Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError());
si no
Print(sy," OpenPosition. OrderModify Comprar con éxito");
}
}
if (op == 1) // Abrir la venta.
{
// Comprobar la disponibilidad de fondos libres
if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134))
{
Print(sy," ",ll," Es imposible abrir la orden Vender, no hay suficiente dinero.");
return(0);
}
RefreshRates();
// Orden de apertura
int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor);
if(ticketsell<0)
Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError());
si no
Print(sy," OpenPosition. OrderSend Sell successfully");
// Dormir (Pausa);
// Modificar la orden (establecer el take profit y el stop loss)
si (sl !=0 || tp !=0)
{
//--- Los precios SL y TP calculados deben ser normalizados
double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS))
double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
//--- Si el valor de entrada es cero, sustituye el precio de modificación por cero
si (sl == 0) SSLoss = 0;
si (tp == 0) STProfit = 0;
bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor);
if(!ressell)
Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError());
si no
Print(sy," OpenPosition. OrderModify Sell successfully");
}
}
return(True);
}
/Fin
P.D. Moderadores, el código no se puede insertar a través del botón.
Estoy dando clases gratuitas (sin cargo) por Skype sobre la inserción de códigos:)
Doy clases gratuitas (sin cargo) por Skype sobre la inserción de códigos:)
Doy clases gratuitas (sin cargo) por Skype sobre la inserción de códigos:)
Gracias.
Hecho, si usted tiene alguna pregunta sobre el código de escritura, también disponible en persona o en Skype
listo, si tiene alguna pregunta sobre el código, correo electrónico o Skype
La Alerta sale con el mensaje: No hay precio. Esperamos una nueva garrapata...
Tenía una cuenta demo que funcionaba bien y abría una operación a la primera. Necesito más detalles.