[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1110

 
ALEX_SPB_RU:

Todavía no lo entiendo.

Aunque especifique explícitamente que la búsqueda debe comenzar desde la posición cero, el objeto llamado ya_Prefix_78 será eliminado , porque la función devolverá el número 4

¡En concreto, para borrar por prefijo, hay que especificar ==0 o poner !

Sin ánimo de ofender, sólo estoy aprendiendo, así que quiero desempacar todo por mí mismo.

Gracias de nuevo por su ayuda.

Buena suerte.

Tal vez no lo dejé lo suficientemente claro:

si(StringFind(nombre, prefijo,0) == 0) es para buscar exclusivamente desde el principio de la cadena.

No me gustan los parámetros por defecto, a no ser que se trate de funciones escritas a mano - ahí el control es total....

Buena suerte.

 
abolk:

Si se le puede llamar fastidio, pues un fastidio. me gustaría ayudar a alguien en particular que necesite ayuda. pero sé por experiencia, que si alguien es demasiado perezoso para entender su propia tarea aunque sea un poco, entonces ayudar es un fastidio total...
¿Por qué? ¿Es posible argumentar que es más rápido y fácil para una persona competente escribir código que para alguien que acaba de abrir un libro de texto, que cometerá algunos errores y sólo obtendrá el resultado correcto? Si te refieres a que no quiero pensar en cómo escribir, entonces lógicamente escribiría inmediatamente el problema y pediría escribir uno, pero no, quiero entenderme, pero no todo el lenguaje, sino específicamente mi tarea
 
sergeev:

Te escribí nombres de funciones específicas.

Incluso te mostré el algoritmo de tus acciones.

¿Te da pereza pensar en lo que has escrito?

Sólo he encontrado OrderModify, no he encontrado OrderOpenPrice , aunque recuerdo haberlo visto antes. En cuanto a pensar, pensé que tal tarea pertenece a las funciones booleanas (creo que if, then) en las que poner lo que has escrito. estoy en lo cierto?
 
Danil93:
Sólo he encontrado OrderModify, no he encontrado OrderOpenPrice , aunque recuerdo haberlo visto antes. En cuanto al pensamiento, pensé que tal problema pertenece a las funciones booleanas (creo que si, entonces) en las que se necesita escribir lo que se escribió. estoy en lo cierto?

Sí.

Si te doy una función que quieres, ¿puedes al menos pegarla en el código?

 
sergeev:

Sí.

Bien. Si te doy la función que quieres, ¿puedes al menos insertarla en el código tú mismo?

Puedo
 

cómo encontrar el máximo entre una fecha determinada y otra fecha mediante programación.

Hay una función que busca un máximo por barra; entiendo que busca un máximo desde la barra 0 hasta la barra 4; ¿puedo utilizar la fecha y la hora de la barra en lugar de la barra?

Por ejemplo, puedo determinar la fecha 2011.01.05 20:00 y encontrar la barra (10 o 100 barras) y luego pegarla en la función de búsqueda del máximo?

iHigh(Symbol(),0,iHighest(NULL,0,MODE_HIGH,4,0)
 
Eliza:

cómo encontrar el máximo entre una fecha determinada y otra fecha mediante programación.

Hay una función que busca un máximo por barra; entiendo que busca un máximo desde la barra 0 hasta la barra 4; ¿puedo utilizar la fecha y la hora de la barra en lugar de la barra?

Por ejemplo, puedo determinar la fecha 2011.01.05 20:00 y encontrar la barra (10 o 100 barras) y luego pegarla en la función de búsqueda del máximo?


int iBarShift( string symbol, int timeframe, datetime time, bool exact=false) 
Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. 
Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости 
от параметра exact, -1 или смещение ближайшего бара.

Параметры:
symbol   -   Символьное имя инструмента. NULL означает текущий символ. 
timeframe   -   Период. Может быть одним из периодов графика. 0 означает период текущего графика. 
time   -   Значение времени для поиска. 
exact   -   Возвращаемое значение если бар не найден. FALSE - iBarShift возвращает ближайший. 
            TRUE - iBarShift возвращает -1. 

Пример:
  datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);

 
 
VladislavVG:

Gracias).
 
Danil93:
puede
//------------------------------------------------------------------ TralTP
void TralTP()
{
        int TS=20; // расстояние убытка, на котором переносим тейкпрофит на цену открытия
        
        double FreezLvl=MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point; // расстояние заморозки ордера
        double StopLvl=MarketInfo(Symbol(), MODE_STOPLEVEL)*Point; // расстояние стопуровня ордера
        
        int n=OrdersTotal(); // число текущих открытых ордеров
        for (int i=0; i<n; i++) // проходим по всем ордерам и двигаем стоп
        {
                if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; // берем ордер
                if (OrderSymbol()!=Symbol()) continue; // если ордер не нашей валюты, то пропускаем
                
                // берем его параметры
                int dir=OrderType(); double cop=NormalizeDouble(OrderOpenPrice(), Digits);
                double csl=NormalizeDouble(OrderStopLoss(), Digits); 
                double ctp=NormalizeDouble(OrderTakeProfit(), Digits);
                
                double apr; if (dir==OP_BUY) apr=Bid; else apr=Ask;
                // проверили уровень заморозки
                if (MathAbs(ctp-apr)<=FreezLvl || MathAbs(csl-apr)<=FreezLvl) continue; // если уровень заморозки
                
                double tp=cop; // ставим ТП на цену открытия
                
                // и проверяем условия выполнения отхода в убыток и правильность установки
                if ((dir==OP_BUY && cop-apr>=TS*Point && (tp<ctp || ctp==0) && tp>apr+StopLvl)
                 || (dir==OP_SELL && apr-cop>=TS*Point && (tp>ctp || ctp==0) && tp<apr-StopLvl))
                {
                        if (!OrderModify(OrderTicket(), cop, csl, tp, 0)) 
                                Print(GetLastError(), " -TralPos #"+OrderTicket()+" tp="+tp);
                }
        }
}
 


if (OrderSymbol()!=Symbol()) continue; // si la orden no es nuestra moneda, entonces salta

Todavía no entiendo nada, acabo de entrar en el foro, miro durante 15 segundos, pero hay un error, debería escribir ==, a primera vista, perdón si algo está mal.

Felices Fiestas!!!Todos!!!!

Razón de la queja: