Status
Open
Budget
10.00 USD
Payment Method
Direct Payment
Job Description
This is a simple Martingala system with the command to open a trade only if the spread is less than "0,006" (0.6 in USD/JPY for example), but it don't work!
The code seems correct, I can't find the problem!
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.Indicators; using System.Diagnostics; using System.Threading; namespace cAlgo { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class HEREHEREHERE : Robot { [Parameter("Initial Volume", DefaultValue = 1000, MinValue = 0)] public int InitialVolume { get; set; } [Parameter("Stop Loss", DefaultValue = 3)] public int StopLoss { get; set; } [Parameter("Take Profit", DefaultValue = 3)] public int TakeProfit { get; set; } [Parameter("Delay minute", DefaultValue = 1)] public int Minute { get; set; } private Random random = new Random(); //----------------------------------------------------------- protected override void OnStart() { Positions.Closed += OnPositionsClosed; Order1(); } //----------------------------------------------------------- private void Order1() { if (Symbol.Spread < 0.006) ExecuteOrder(InitialVolume, GetRandomTradeType()); if (Symbol.Spread > 0.006) { var stopwatch = Stopwatch.StartNew(); System.Threading.Thread.Sleep(Minute * 600); Console.WriteLine(stopwatch.ElapsedMilliseconds); Order1(); } } //----------------------------------------------------------- private void ExecuteOrder(long volume, TradeType tradeType) { var result = ExecuteMarketOrder(tradeType, Symbol, volume, "Martingale", StopLoss, TakeProfit); if (result.Error == ErrorCode.NoMoney) Stop(); } //----------------------------------------------------------- private void OnPositionsClosed(PositionClosedEventArgs args) { Print("Closed"); var position = args.Position; { if (position.Label != "Martingale" || position.SymbolCode != Symbol.Code) return; if (position.Pips > 0) Order1(); if (position.GrossProfit > 0) { ExecuteOrder(InitialVolume, GetRandomTradeType()); } else { ExecuteOrder((int)position.Volume * 2, position.TradeType); } } } private TradeType GetRandomTradeType() { return random.Next(2) == 0 ? TradeType.Buy : TradeType.Sell; } } }
Comments
![mindbreaker's avatar](/uploads/user-3567/avatar/1d737895c38e9f71336cf4e9815b068995a363eb.jpeg)
Come on, one line you can not add?
add this
if (Symbol.Spread < Spr)
before
ExecuteOrder((int)position.Volume * 2, position.TradeType);
Line:
if (Symbol.Spread < Spr) ExecuteOrder((int)position.Volume * 2, position.TradeType);
![tommy.994's avatar](/uploads/user-9489/avatar/3ec282398ff5e7efdb25e31dad4be448af6aa2b1.jpeg)
I upgraded to the latest version but it does not change anything.
Moreover, the control of the spread is ignored by the new positions doubled from Martingale.
![mindbreaker's avatar](/uploads/user-3567/avatar/1d737895c38e9f71336cf4e9815b068995a363eb.jpeg)
It works for me (positions are opened).
install again calgo or ctrader.
![tommy.994's avatar](/uploads/user-9489/avatar/3ec282398ff5e7efdb25e31dad4be448af6aa2b1.jpeg)
If I active the robot when the spread is high it does nothing, okay, that's good, but in the moment that the spread becomes low the order doesn't start :(
![mindbreaker's avatar](/uploads/user-3567/avatar/1d737895c38e9f71336cf4e9815b068995a363eb.jpeg)
https://en.wikipedia.org/wiki/Millisecond
milliseconds:
System.Threading.Thread.Sleep(Minute * 60 * 1000);
![mindbreaker's avatar](/uploads/user-3567/avatar/1d737895c38e9f71336cf4e9815b068995a363eb.jpeg)
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;
using System.Diagnostics;
using System.Threading;
namespace cAlgo
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class Txt : Robot
{
[Parameter("Initial Volume", DefaultValue = 1000, MinValue = 0)]
public int InitialVolume { get; set; }
[Parameter("Stop Loss", DefaultValue = 3)]
public int StopLoss { get; set; }
[Parameter("Take Profit", DefaultValue = 3)]
public int TakeProfit { get; set; }
[Parameter("Delay minute", DefaultValue = 1)]
public int Minute { get; set; }
[Parameter("Spread", DefaultValue = 0.006)]
public double Spr { get; set; }
private Random random = new Random();
//-----------------------------------------------------------
protected override void OnStart()
{
Positions.Closed += OnPositionsClosed;
Order1();
}
//-----------------------------------------------------------
private void Order1()
{
Print(Symbol.Spread);
if (Symbol.Spread < Spr){
ExecuteOrder(InitialVolume, GetRandomTradeType());
}else{
var stopwatch = Stopwatch.StartNew();
System.Threading.Thread.Sleep(Minute * 6000);
Print(stopwatch.ElapsedMilliseconds);
Order1();
}
}
//-----------------------------------------------------------
private void ExecuteOrder(long volume, TradeType tradeType)
{
var result = ExecuteMarketOrder(tradeType, Symbol, volume, "Martingale", StopLoss, TakeProfit);
if (result.Error == ErrorCode.NoMoney)
Stop();
}
//-----------------------------------------------------------
private void OnPositionsClosed(PositionClosedEventArgs args)
{
Print("Closed");
var position = args.Position;
{
if (position.Label != "Martingale" || position.SymbolCode != Symbol.Code)
return;
if (position.Pips > 0)
Order1();
if (position.GrossProfit > 0)
{
ExecuteOrder(InitialVolume, GetRandomTradeType());
}
else
{
ExecuteOrder((int)position.Volume * 2, position.TradeType);
}
}
}
private TradeType GetRandomTradeType()
{
return random.Next(2) == 0 ? TradeType.Buy : TradeType.Sell;
}
}
}
Eu decidi fazer um binario opcoes, o primeiro passo neste trabalho yavlyaetsya formacao inicial elizabeth os fundamentos .. put-call-options.com/br/ Collection Solutions and Contact Possibilities Trading E por isso que eu escolhi um level delaware artigos de alguns websites na Web, se voce pode se perguntar vospolzovatsya