int OrdCon(int nap, int MGV)
{
int result=0;
for (int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if ((nap==0) && (OrderSymbol() == Symbol())&& (OrderMagicNumber() == MGV)) {
result=result+1; // открыт ордер бай
}
if ((nap==1) && (OrderSymbol() == Symbol()) && (OrderMagicNumber() == MGV)) {
result=result+1; // открытый ордер селл
}
}
return(result); // 0 means we have no trades
}
int OrdCon(int nap, int MGV)
{
int result=0;
for (int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if ((nap==0) && (OrderSymbol() == Symbol())&& (OrderMagicNumber() == MGV)) {
result=result+1; // открыт ордер бай
}
if ((nap==1) && (OrderSymbol() == Symbol()) && (OrderMagicNumber() == MGV)) {
result=result+1; // открытый ордер селл
}
}
return(result); // 0 means we have no trades
}
//+------------------------------------------------------------------+//| 20/200 expert.mq4 |//| 1H EUR/USD |//| Smirnov Pavel |//| www.autoforex.ru |//+------------------------------------------------------------------+#property copyright "Smirnov Pavel"#property link "www.autoforex.ru"externint TakeProfit = 20; // Уровень тейкпрофит в пунктахexternint StopLoss = 200; // уровень стоплосс в пунктахexternint TradeTime=18;
externint t1=7;
externint t2=2;
externint delta=7;
externint dayout=1;
externdouble lot = 0.1;
int ticket;
bool cantrade=true;
int OpenLong(double volume=0.1)
{
int slippage=10;
string comment="20/200 expert (Long)";
color arrow_color=Red;
int magic=0;
ticket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,Ask-StopLoss*Point,
Ask+TakeProfit*Point,comment,magic,0,arrow_color);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Buy order opened : ",OrderOpenPrice());
return(0);
}
}
else
{
Print("Error opening Buy order : ",GetLastError());
return(-1);
}
}
int OpenShort(double volume=0.1)
{
int slippage=10;
string comment="20/200 expert (Short)";
color arrow_color=Red;
int magic=0;
ticket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,Bid+StopLoss*Point,
Bid-TakeProfit*Point,comment,magic,0,arrow_color);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Sell order opened : ",OrderOpenPrice());
return(0);
}
}
else
{
Print("Error opening Sell order : ",GetLastError());
return(-1);
}
}
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
if((TimeHour(TimeCurrent())>TradeTime)) cantrade=true;
// проверяем есть ли открытые ордера ...if(OrdersTotal()<1)
{
// ... если нет ни одного открытого ордера, то идем дальше// проверяем настало ли время для торговлиif((TimeHour(TimeCurrent())==TradeTime)&&(cantrade)&&(TimeDayOfWeek(TimeCurrent())!=dayout))
{
// ... если настало время, тоif ((Open[t1]-Open[t2])>delta*Point) //Если цена изменилась на величину delta
{
//условие выполнено значит входим в короткую позицию:// проверяем есть ли свободные деньги для открытия короткой позицииif(AccountFreeMarginCheck(Symbol(),OP_SELL,lot)<=0 || GetLastError()==134)
{
Print("Not enough money");
return(0);
}
OpenShort(lot);
cantrade=false; //запрещаем торговать повторно до следующего бараreturn(0);
}
if ((Open[t2]-Open[t1])>delta*Point) //Если цена изменилась на величину delta
{
// условие выполнено значит входим в длинную позицию// проверяем есть ли свободные деньги на счетуif(AccountFreeMarginCheck(Symbol(),OP_BUY,lot)<=0 || GetLastError()==134)
{
Print("Not enough money");
return(0);
}
OpenLong(lot);
cantrade=false;
return(0);
}
}
}
return(0);
}
みんな、どこがエラーなのか...aはその後シグナルでいくつかのポジションを開き、時にはシグナルを見逃す...aはその後ペアでストップまたは利益をトリガーした後、新しいポジションを開く...。
見てください...条件:RSIの期間14と17の下から上へのレベル30と上から下への上昇トレンド70の同時クロス...。
みんな、どこがエラーなのか...aはその後シグナルでいくつかのポジションを開き、時にはシグナルを見逃す...aはその後ペアでストップまたは利益をトリガーした後、新しいポジションを開く...。
見てください...条件:RSIの期間14と17の下から上へのレベル30と上から下への上昇トレンド70の同時クロス...。
私ならそのようにしますし、ストップは売りでなく買いで設定します。
は...あなたの方法では、30以下の値では、取引を開始します!!それは受け入れられない...私は下から上に30レベルのクロスが必要です!!!!!!!!!!!!!!!!。
と、その値
これらはちょうど前のキャンドルオープニングのRSIの値です...彼らはちょうど30未満でなければなりません!!すべてがここで正しいです...私はちょうど取引が信号でいくつかの部分で開かれる理由を理解していない!!!!!!!!!!!!!。
私ならそのようにし、すぐに買いではなくバイストップ、売りではなくセルストップに設定します
は...あなたのやり方では、30以下の値は取引を開始します!!これは受け入れられません...私は下から30レベルのクロスが必要です!!!!!!!!!!!!!!。
と、その値
これらは、ちょうど前のオープニングローソクのRSI値です...彼らはちょうど30未満でなければなりません!!ここではすべてが正しいです...私はちょうど取引が信号で数回開かれる理由を理解していません
もし、1つのトレードを開くことを望むなら、それはうまくいかないでしょう。386コンピュータで、1秒で100万トレードをする方がはるかに速いのです。1つの案件の開封を制御することで、開封された案件を制御することができます。トレードの合計が0ならオープン、0なら終了です。
うーん...。というのは、100万件の取引があるのなら、取引は1回で済ませるべき......ということです。
OK、何とかしてみます))) トレードをコントロールするコードがあれば教えてください...お願いします)))
うーん...。ということです。100万件のトランザクションがあれば、トランザクションは1件ずつ開かれるはずですが......。
OK、何とかしてみます))) トランザクションコントロールのコードがあれば、教えてください)))
以下はその機能です。
で、この時点で、オープンオーダーが売りか買いかという結論は、どのような根拠に基づくものなのでしょうか。
以下は、上記のコードの全体です。
ここでは、私のアドバイザーがあなたのPSIを最適化しました。