[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 1110

 
ALEX_SPB_RU:

まだわからない!?

0から検索するように明示的に指定しても、関数は4 番を返すため、ya_prefix_78という オブジェクトは削除されます。

具体的には、接頭辞による削除を行うには、==0 を指定するか、!

悪気はないのですが、私はまだ勉強中なので、自分ですべてを解き明かしたいのです。

また、お世話になります

がんばってください。

たぶん、私はそれを十分に明確にしていなかった:

if(StringFind(name, prefix,0) == 0) は、文字列の先頭から排他的に検索します。

手書きの関数でない限り、デフォルトのパラメータは好きではないのですが、フルコントロールが可能です.

頑張ってください。

 
abolk:

でも、経験上、自分の仕事を少しも理解できないような怠け者は、助けても無駄だと思うんです...。
なぜでしょうか? 能力のある人がコードを書く方が、教科書を開いただけで、何度か間違いを犯し、正しい結果しか得られない人よりも、早くて簡単だという主張は可能でしょうか? もし、私が書き方を考えたくないという意味なら、論理的にはすぐに問題を書き、書いてくれと頼むでしょう。でも、いいえ、私は自分を理解したいのですが、言語全体ではなく、まさに自分のタスクを理解したいのです
 
sergeev:

具体的な関数名を書きました。

あなたの行動のアルゴリズムも示しました。

自分が何を書いたか考えることすら面倒なのか?

OrderModifyだけが 見つかり、OrderOpenPriceは 以前見た記憶があるのですが、見つけられませんでした。考えるということに関しては、そのような作業はブール関数(if, thenだと思います)に属するもので、そこにあなたが書いたものを入れればいいと思っていたのですが、間違っていますか?
 
Danil93:
OrderModifyだけが 見つかり、OrderOpenPriceは 以前見た記憶があるのですが、見つけられませんでした。思考に関しては、このような問題はブーリアン関数(if, thenと思う)に属するもので、自分が書いたことを書く必要があると思ったのですが、間違っていますか?

はい。

OK、欲しい関数を渡したら、少なくとも自分でコードに貼り付けられるか?

 
sergeev:

そうですね。

OK、欲しい関数を渡したら、少なくとも自分でコードに貼り付けられるか?

アイキャン
 

ある日付と別の日付の間の高値をプログラム的に見つける方法。

バーで高値を検索する機能がありますが、0バーから4バーまでの高値を検索するとのことですが、バーの代わりにバーの日時を使っても良いのでしょうか?

例えば、日付2011.01.05 20:00を確定して、バー(10本または100本)を検索して、高値を検索する機能に貼り付ければいいのでしょうか。

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

ある日付と別の日付の間の高値をプログラム的に見つける方法。

バーで高値を検索する機能がありますが、0バーから4バーまでの高値を検索するとのことですが、バーの代わりにバーの日時を使っても良いのでしょうか?

例えば、日付2011.01.05 20:00を確定して、バー(10本または100本)を検索して、高値を検索する機能に貼り付ければいいのでしょうか。


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:

ありがとうございました)
 
Danil93:

//------------------------------------------------------------------ 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; // 注文が私たちの通貨でない場合は、スキップします。

私はまだ何も理解していない、私はちょうどフォーラムに入った、私は15秒のために見るが、エラーがあります、私は==を書くべきである、一見して、何かが間違っている場合は申し訳ありません。

Happy Holidays!!!Everyone!!!!